2017-03-01 75 views
0

我正在使用自定义模板在Django中设置密码重置功能。 但是,当我输入mail:id并单击重置密码时,我面临着“无反向匹配错误”。请别人帮我,我明白这是一个老问题,我跟着其他答案并尝试解决但不能上来与solution.Please找到下面的代码,并帮助我解决这个问题。Django:没有密码重置的反向匹配

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 

我甲肝e从下面的链接尝试解决方案,但找不到解决方案。 NoReverseMatch on password_Reset_confirm

https://github.com/bread-and-pepper/django-userena/issues/380 

https://stackoverflow.com/questions/35745674/django-password-reset-noreversematch-error 

我从http://code.techandstartup.com/django/reset-password/ ==>自定义的模板下面的教程。

+0

感谢您的答案将您的URL模式的名称,它的工作与Chrome浏览器,但昨天我的工作Firefox和它的不工作,可能是我的浏览器设置问题。 –

回答

2

而不是引用视图,你只是需要引用您试图匹配

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