首先,此代码适用于我的本地测试环境,但无法在我们的暂存环境中运行。
我得到的错误是 -
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)
我尝试在调试时使用* args和** kwargs传递成员ID哈希。这似乎应该是简单的......我错过了什么?
以下是cutom模板标签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)
答案 0 :(得分:0)
你应该用反斜杠
来转义连字符[A-Za-z0-9=\-_]
或者你可以把它移到小组的末尾
[A-Za-z0-9=_-]`.
目前,=-_
被视为从=
到_
的范围,实际上并不包含-
。
答案 1 :(得分:0)
它忽略了我的功能,因为我使用的是Reportlab,并且没有在Staging服务器上安装Reportlab。一旦我说出来,它就有用了。