Django错误:反向' password_reset_confirm'没有找到参数

时间:2017-11-19 07:55:02

标签: django

我正在使用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'),

4 个答案:

答案 0 :(得分:0)

Django的错误消息是,您的代码已尝试将password_reset_confirm撤消到其网址,但您尚未提供uid64token个参数网址模式需要。您应该找到执行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>