Il n'y a pas de méthode inbuld, pour ce faire, je pense, mais en utilisant TimestampSigner, vous pouvez effectuer les opérations suivantes:
En utilisant TimestampSigner, vous pouvez chiffrer votre PK, et décrypter plus tard lorsque vous voulez la chaîne d'origine.
>>> from datetime import timedelta
>>> from django.core.signing import TimestampSigner
>>> signer = TimestampSigner()
>>> value = signer.sign(str(pk)) # encrypt the PK.
>>> value
'1:1NMg5H:oPVuCqlJWmChm1rA2lyTUtelC-c'
>>> value = value.replace(pk,"") # doing this because, it append the original primary key + encrypted string.
>>> value # use this PK to show in the URL.
'1NMg5H:oPVuCqlJWmChm1rA2lyTUtelC-c'
>>> repack = "{}:{}".format(pk,value) # When you want back the original PK, add the PK + encrypted string.
>>>repack
'1:1NMg5H:oPVuCqlJWmChm1rA2lyTUtelC-c'
>>> signer.unsign(repack) # decrypt the PK.
'1'
Espérons que ce sera utile pour vous.
ok essayez de créer votre propre fonction – stone
Si vous ne voulez pas d'identifiants numériques, vous pouvez utiliser [UUIDFields] (https://docs.djangoproject.com/fr/1.11/ref/models/fields/#uuidfield) pour votre clé primaire de modèle. –
Vous pouvez également utiliser un autre champ (si unique = Vrai) de votre modèle dans l'URL si vous ne voulez pas exposer le pk – dentemm