Django:密码重置没有反向匹配

时间:2017-03-01 07:51:39

标签: django

我正在使用自定义模板在Django中处理密码重置功能。 但是当我输入邮件时:id并点击重置密码我面临“没有反向匹配错误”。请有人帮助我,我明白这是一个老问题,我已经按照其他答案尝试解决但是无法想出来解决方案。请找到下面的代码并帮我解决这个问题。

urls.py

from django.conf.urls import url,include
from django.contrib import admin
from django.contrib.auth.views import password_reset,password_reset_done,password_reset_confirm,password_reset_complete
from surveysite.views import home,about,login,loggedin,loggedout

urlpatterns = [
    url(r'^$', home, name='home'),
    url(r'^about/$',about, name='about'),
    url(r'^accounts/', include('registration.backends.default.urls')),
    url(r'^accounts/login/$', login, name='login'),
    url(r'^accounts/loggedin/$',loggedin, name='loggedin'),
    url(r'^accounts/logout/$', loggedout, name='logout'),
    url(r'^accounts/password_reset/$', password_reset, 
        {'post_reset_redirect' : '/accounts/password_reset/mailed/'},
        name="password_reset"),
    url(r'^accounts/password_reset/mailed/$',password_reset_done),
    url(r'^accounts/password_reset/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',password_reset_confirm, 
        {'post_reset_redirect' : '/accounts/password_reset/complete/'},name="password_reset_confirm"),
    url(r'^accounts/password_reset/complete/$',password_reset_complete),
    url(r'^admin/', admin.site.urls),
]

Password_reset_email

{% autoescape off %}
You're receiving this email because you requested a password reset for your user account at {{ site_name }}.

Please go to the following page and choose a new password:
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url 'django.contrib.auth.views.password_reset_confirm' uidb36=uid token=token %}
{% endblock %}
Your username, in case you've forgotten: {{ user.get_username }}

Thanks for using our site!

The {{ site_name }} team

{% endautoescape %}

错误堆栈跟踪

NoReverseMatch at /accounts/password_reset/

Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb36': 'MQ', u'token': u'4jz-530973903a3b600e2a97'}' not found. 0 pattern(s) tried: []

Request Method:     POST
Request URL:    http://localhost:8000/accounts/password_reset/
Django Version:     1.10.5
Exception Type:     NoReverseMatch
Exception Value:    

Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb36': 'MQ', u'token': u'4jz-530973903a3b600e2a97'}' not found. 0 pattern(s) tried: []

Exception Location:     C:\Python27\lib\site-packages\django\urls\resolvers.py in _reverse_with_prefix, line 392
Python Executable:  C:\Python27\python.exe
Python Version:     2.7.13
Python Path:    

['G:\\Manoj\\Software Engineering-Yui Man lee\\Django_Project\\surveysite',
 'C:\\Python27',
 'C:\\Python27\\Tools\\Scripts',
 'G:\\Manoj\\Software Engineering-Yui Man lee\\Django_Project\\surveysite',
 'C:\\WINDOWS\\SYSTEM32\\python27.zip',
 'C:\\Python27\\DLLs',
 'C:\\Python27\\lib',
 'C:\\Python27\\lib\\plat-win',
 'C:\\Python27\\lib\\lib-tk',
 'C:\\Python27\\lib\\site-packages',
 'C:\\Python27\\lib\\site-packages\\PIL']

In template G:\Manoj\Software Engineering-Yui Man lee\Django_Project\surveysite\templates\registration\password_reset_email.html, error at line 6

我尝试过以下链接的解决方案,但找不到解决方案。

我正在关注http://code.techandstartup.com/django/reset-password/ ==&gt;的教程自定义模板。

1 个答案:

答案 0 :(得分:2)

您需要仅引用您要匹配的网址格式的名称,而不是引用该视图

{% url 'password_reset_confirm' uidb36=uid token=token %}