首先,這段代碼適用於我的本地測試環境,但無法在我們的臨時環境中工作。Django 1.8:NoReverseMatch錯誤
的錯誤我得到是 -
Reverse for 'myaccounttempid' with arguments '('---URL_SAFE_BASE64_HASH_HERE---',)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
在我的urls.py,我有
url(r'^accounts/my-account/temporary-id/(?P<member_id>[A-Za-z0-9=_\-]+)/$', my_account_temporary_id,
name='myaccounttempid'),
在我的模板,我有
<a href="{% url 'myaccounttempid' member.member_id|encode_for_url %}">Link</a>
在models.py ,我有
def my_account_temporary_id(request, member_id):
member_id = decode_value_from_url(member_id)
我曾嘗試在調試時將成員ID哈希與* args和** kwargs一起傳遞。這似乎是應該很簡單的事情......我錯過了什麼?
下面是該函數的對自定義模板標籤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)
什麼是過濾器'encode_for_url'返回? – Gocht
encode_for_url正在返回實際進入函數的url安全base64字符串。 – avryhof
您是否在使用名稱空間來包含網址? – Alasdair