我正在尝试制作验证链接电子邮件,作为我在Django中进行用户注册的一部分。我的模板中有一个{%url%}标签,但是它给了我关于uid和token变量的NoReverseMatch错误。
这是模板中的代码:
https://{{ domain }}{% url 'users:activate' uidb64=uid token=token%}
这是我的网址格式:
re_path(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', views.activate, name='activate'),
最后,这是我的错误:
django.urls.exceptions.NoReverseMatch: Reverse for 'activate' with keyword arguments '{'uidb64': b'MzY', 'token': '4xq-eb603ee3a9676d7b3edc'}' not found. 1 pattern(s) tried: ['users\\/activate/(?P<uidb64>[0-9A-Za-z_\\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$']
我有预感,这可能与正则表达式有关,但这还不是我要说的重点!
似乎找到了激活URL模式,但我似乎无法使其识别出URL参数!
答案 0 :(得分:1)
看起来像uid
类型是字节而不是字符串。在将其传递到模板上下文之前,尝试对其进行解码:
# you view code
uid = uid.decode()
context['uid'] = uid
return render(requet, 'template.html', context)