Zunächst funktioniert dieser Code in meiner lokalen Testumgebung, funktioniert aber nicht in unserer Staging-Umgebung.Django 1.8: NoReverseMatch-Fehler
Der Fehler Ich erhalte is-
Reverse for 'myaccounttempid' with arguments '('---URL_SAFE_BASE64_HASH_HERE---',)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
In My urls.py, ich habe
url(r'^accounts/my-account/temporary-id/(?P<member_id>[A-Za-z0-9=_\-]+)/$', my_account_temporary_id,
name='myaccounttempid'),
In My Template, ich habe
<a href="{% url 'myaccounttempid' member.member_id|encode_for_url %}">Link</a>
In models.py Ich habe
def my_account_temporary_id(request, member_id):
member_id = decode_value_from_url(member_id)
Ich habe versucht, den Member-ID-Hash mit * Args und ** Kwargs beim Debuggen übergeben. Das scheint etwas zu sein, das einfach sein sollte ... was fehlt mir?
Hier ist der Code für die Funktion der cutom Template-Tag encode_for_url
def encode_value_for_url(original_value):
"""First base 64 encodes a value, cryptographically signs it and then base 64 encodes it again."""
signer = Signer()
encoded_data = base64.urlsafe_b64encode(original_value)
signed_data = signer.sign(encoded_data)
return base64.urlsafe_b64encode(signed_data)
Was gibt der Filter 'encode_for_url' zurück? – Gocht
encode_for_url gibt die url safe base64-Zeichenfolge zurück, die tatsächlich an die Funktion gesendet wird. – avryhof
Verwenden Sie einen Namespace zum Einschließen von URLs? – Alasdair