Django:密码重置时没有反向匹配[重复]

Posted

技术标签:

【中文标题】Django:密码重置时没有反向匹配[重复]【英文标题】:Django : No Reverse Match on password reset [duplicate] 【发布时间】:2017-07-20 10:40:22 【问题描述】:

我正在使用自定义模板在 Django 中开发密码重置功能。 但是当我输入 mail: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

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

NoReverseMatch on password_Reset_confirm

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

django password reset NoReverseMatch error

我正在学习来自http://code.techandstartup.com/django/reset-password/ ==> 自定义模板的教程。

【问题讨论】:

感谢您的回答,它正在与 Chrome 浏览器一起使用,但昨天我正在使用 Firefox,但它无法正常工作,可能是我的浏览器设置问题。 【参考方案1】:

您只需要引用您尝试匹配的 url 模式的名称,而不是引用视图

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

【讨论】:

以上是关于Django:密码重置时没有反向匹配[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Django 在密码重置时不会重定向到正确的路径

Django 2.1.2 密码重置身份验证视图:找不到“password_reset_confirm”的反向

在Drupal中重置密码功能页面没有正确重定向

在使用 Django 框架构建的博客 Web 应用程序中单击重置密码时,我没有收到密码重置电子邮件链接

使用gmail和Django注册不会重置密码电子邮件

无法为 Django 的重置密码流程创建集成测试