我正在使用Django 1.11来构建用户帐户应用程序。我的帐户应用的网址如下所示为代码1。我还有一个模板/注册文件夹和几个模板文件: enter image description here
输入电子邮件地址后,我收到了以下链接的电子邮件: http://127.0.0.1:8000/account/password-reset/confirm/MQ/4ra-66d3672f1d340589fbf9/
点击上面的链接,浏览器会重定向到此链接: http://127.0.0.1:8000/account/password-reset/confirm/MQ/set-password/
错误提示:
> / account / password-reset / confirm / MQ / set-password / 中的NoReverseMatch反向' password_reset_confirm'没有找到参数。尝试了1种模式:[' account / password-reset / confirm /(?P [ - \ w] +)/(?P [ - \ w] +)/ $']
请求方法:GET
请求网址:http://127.0.0.1:8000/account/password-reset/confirm/MQ/set-password/
Django版本:1.11.7
异常类型:NoReverseMatch
例外价值:
反向' password_reset_confirm'没有找到参数。尝试了1种模式:[' account / password-reset / confirm /(?P [ - \ w] +)/(?P [ - \ w] +)/ $']
请帮我解决这个问题。看来点击链接后,Django无法在templates / registration文件夹下呈现password_reset_confirm.html。
代码1:
# restore password urls
url(r'^password-reset/$', auth_views.PasswordResetView.as_view(), name='password_reset'),
url(r'^password-reset/done/$', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
url(r'^password-reset/confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$',
auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
url(r'^password-reset/complete/$',
auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
答案 0 :(得分:0)
Django的错误消息是,您的代码已尝试将password_reset_confirm
撤消到其网址,但您尚未提供uid64
和token
个参数网址模式需要。您应该找到执行reverse()
的代码部分并更新它以提供参数:
reverse('password_reset_confirm',args=(uid64, token))
答案 1 :(得分:0)
urls.py:
path('accounts/reset_password_confirm/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='reset_password_confirm'),
如上所述更改网址对我有用。虽然,我仍然没有收到电子邮件。错误消失了。
答案 2 :(得分:0)
path('users/password_reset/', PasswordResetView.as_view(
template_name='commons/password_reset_form.html',
subject_template_name='commons/password_reset_subject.txt',
email_template_name='commons/password_reset_email.html',
success_url='done',), name="password_reset"),
path('users/password_reset/done/',
PasswordResetDoneView.as_view(
template_name='commons/password_reset_done.html'),name="password_reset_done"),
path('users/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view(
template_name='commons/password_reset_confirm.html',
success_url='/users/reset/done/'),name="password_reset_confirm"),
path('users/reset/done/',
PasswordResetCompleteView.as_view(template_name='commons/password_reset_complete.html'),
name="password_reset_complete"),
答案 3 :(得分:-1)
转到密码重设确认模板文件,然后摆脱这种形式的操作
<form method="post"> </form>
代替此:
<form action={% url 'your template file name'%} method="post"></form>