【问题标题】:NoReverseMatch error in password reset functionality django密码重置功能django中的NoReverseMatch错误
【发布时间】:2013-09-14 00:35:56
【问题描述】:

我正在尝试在 django 中实现密码重置功能,以下是我的代码

urls.py

urlpatterns = patterns('',
    url(r'^signup/$', 'accounts.views.signup', name="signup_email"),
    url(r'^user/password/reset/$', 'django.contrib.auth.views.password_reset', {'template_name':'accounts/forgot_password.html',\
                               'post_reset_redirect' : '/user/password/reset/done/'}, name="reset_password"),
    url(r'^user/password/reset/done/$', 'django.contrib.auth.views.password_reset_done'),

forgot_password.html

     <form accept-charset="UTF-8" action="{% url 'reset_password' %}" class="reset_pass" id="reset_pass" method="post">
            {% csrf_token %}
            <div class="control-group">
                <label class="control-label" for="user_email" style="font-size: 18px; color: #474747">Email</label>
                <div class="controls">
                    <input class="" id="id_email" name="email" type="text" value="">

                </div>
            </div>
            <div class="control-group">
                <div class="controls">
                    <button type="submit" value="reset_password" class="btn btn-primary">Send me reset password</button>
                </div>
            </div>
       </form>

所以当我们转到 user/password/reset/ 的 URL 时,正在显示 forgot_password.html,当我输入电子邮件并提交表单时,我收到以下错误

模板渲染时出错

In template /home/user/proj/virtualenvironment/apps/pro_utils/accounts/templates/registration/password_reset_email.html, error at line 7

任何人都可以告诉我为什么它在抱怨NoReversemtach,即使我使用的是内置视图?

【问题讨论】:

    标签: python django forms passwords reset


    【解决方案1】:

    您需要在urls.py 中添加该网址+视图,如下所示

    url(r'^user/password/reset/confirm/$', 
                 'django.contrib.auth.views.password_reset_confirm'),
    

    它提供了一个输入新密码的表格。

    您可能还需要添加它

    url(r'^user/password/reset/complete/$', 
                 'django.contrib.auth.views.password_reset_complete'),
    

    【讨论】:

      【解决方案2】:

      您还可以通过包含使用django.contrib.auth.urls 中定义的默认网址

      (r'^accounts/', include('django.contrib.auth.urls')),
      

      致您的urls.py

      password_reset_confirm 模式需要 uidb64token 的 2 个附加参数:

      url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
          'password_reset_confirm',
      

      也可以在这里查看答案:What are the default URLs for Django's User Authentication system?

      【讨论】:

        猜你喜欢
        • 2016-06-15
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2013-09-21
        • 2013-05-17
        • 1970-01-01
        • 2015-12-14
        • 2021-11-11
        相关资源
        最近更新 更多