Django密码重置功能中出现NoReverseMatch错误

3
我正在尝试在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/时,会显示一个forgot_password.html页面。当我输入电子邮件并提交表单时,出现以下错误:

enter image description here

还有一个模板渲染错误

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

请问为什么尽管使用内置视图,它还会报错"NoReversemtach"呢?
2个回答

2

你需要在 urls.py 中添加以下的 url+view

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'),

1
你可以在包含以下代码的情况下,使用 Django.contrib.auth.urls 中定义的默认 URL:

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',

还可以在这里查看答案:Django用户认证系统的默认URL是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接