注册时的 NoReverseMatch - Django
NoReverseMatch at register - Django
我正在尝试向我的 Django 项目添加电子邮件确认功能。
我已经创建了一个视图和一个 url,但我现在收到此错误:
Reverse for 'activate' with keyword arguments '{'uidb64': 'MzA', 'token': '55y-fec02444935d88a056dc'}' not found. 1 pattern(s) tried: ['activate/<uidb64:\[0\-9A\-Za\-z_\\\-\]\+\)>/<token:\[0\-9A\-Za\-z\]\{1,13\}\-\[0\-9A\-Za\-z\]\{1,20\}\)/\$>\)/$']
我觉得错误应该在url,这里是:
path('activate/<uidb64:[0-9A-Za-z_\-]+)>/<token:[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$>)/', views.activate, name='activate'),
我是否以错误的方式声明它?提前致谢
您的 path
call looks like a mixture of typical path
patterns, and re_path
(正则表达式)语法,使其非常 "strange"。
您可能想要定义如下内容:
from django.urls import <b>re_path</b>
# ...
<b>re_path</b>(<b>r</b>'^activate/(<b>?P<uidb64></b>[0-9A-Za-z_\-]+)/(<b>?P<token></b>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', views.activate, name='activate'),
所以调用 re_path
,然后用 (?P<variablename>pattern)
.
定义变量
你可以这样使用它:
path('activate/<str:uidb64>/<str:token>/', views.activate, name='activate')
(此部分可能与您的 noreversematch
错误无关)
此外,当您要使用 reverse 时,请确保为每个关键字参数发送正确的值。根据你的问题,我假设它们是不正确的(也许 token
的值属于 uidb64
而 uidb64
的值属于 token
)。如果是这样,那么请像这样调用反向:
reverse('activate', kwargs={'token':'MzA', 'uid64': '55y-fec02444935d88a056dc'})
或在网址中:
{% url 'activate' token='MzA' uid64='55y-fec02444935d88a056dc' %}
我正在尝试向我的 Django 项目添加电子邮件确认功能。 我已经创建了一个视图和一个 url,但我现在收到此错误:
Reverse for 'activate' with keyword arguments '{'uidb64': 'MzA', 'token': '55y-fec02444935d88a056dc'}' not found. 1 pattern(s) tried: ['activate/<uidb64:\[0\-9A\-Za\-z_\\\-\]\+\)>/<token:\[0\-9A\-Za\-z\]\{1,13\}\-\[0\-9A\-Za\-z\]\{1,20\}\)/\$>\)/$']
我觉得错误应该在url,这里是:
path('activate/<uidb64:[0-9A-Za-z_\-]+)>/<token:[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$>)/', views.activate, name='activate'),
我是否以错误的方式声明它?提前致谢
您的 path
call looks like a mixture of typical path
patterns, and re_path
(正则表达式)语法,使其非常 "strange"。
您可能想要定义如下内容:
from django.urls import <b>re_path</b>
# ...
<b>re_path</b>(<b>r</b>'^activate/(<b>?P<uidb64></b>[0-9A-Za-z_\-]+)/(<b>?P<token></b>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', views.activate, name='activate'),
所以调用 re_path
,然后用 (?P<variablename>pattern)
.
你可以这样使用它:
path('activate/<str:uidb64>/<str:token>/', views.activate, name='activate')
(此部分可能与您的 noreversematch
错误无关)
此外,当您要使用 reverse 时,请确保为每个关键字参数发送正确的值。根据你的问题,我假设它们是不正确的(也许 token
的值属于 uidb64
而 uidb64
的值属于 token
)。如果是这样,那么请像这样调用反向:
reverse('activate', kwargs={'token':'MzA', 'uid64': '55y-fec02444935d88a056dc'})
或在网址中:
{% url 'activate' token='MzA' uid64='55y-fec02444935d88a056dc' %}