用于re_path的Django模板网址NoReverseMatch

时间:2018-07-10 04:29:29

标签: django django-templates django-urls django-users

我正在尝试制作验证链接电子邮件,作为我在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参数!

1 个答案:

答案 0 :(得分:1)

看起来像uid类型是字节而不是字符串。在将其传递到模板上下文之前,尝试对其进行解码:

# you view code
uid = uid.decode()
context['uid'] = uid
return render(requet, 'template.html', context)