Прежде всего вы должны написать две функции для кодирования и декодирования значений следующим образом:
import base64
from Crypto import Random
from Crypto.Cipher import AES
AKEY = 'mysixteenbytekey' # AES key must be either 16, 24, or 32 bytes long
iv = Random.new().read(AES.block_size)
def encode(message):
obj = AES.new(AKEY, AES.MODE_CFB, iv)
return base64.urlsafe_b64encode(obj.encrypt(message))
def decode(cipher):
obj2 = AES.new(AKEY, AES.MODE_CFB, iv)
return obj2.decrypt(base64.urlsafe_b64decode(cipher))
затем, когда вы хотите передать параметр pk в шаблон, закодируйте его следующим образом:
return render(...{
...
'encode_pk': encode(str(pk)),
})
тогда вы можете передать его как запрос GET.когда вы создаете свой URL в своем шаблоне, добавьте ?
к URL и ваш параметр к нему будет выглядеть так:
<a href="{% url 'redirection' %}?pk={{ encode_pk }}">Perform</a>
по вашему мнению, вы можете получить этот параметр следующим образом
def redirection(request):
pk = decode(request.GET.get("pk"))
# do anything with pk