Python django密码重置NoReverseMatch错误

Python django密码重置NoReverseMatch错误,python,django,passwords,reset,Python,Django,Passwords,Reset,我正在开发Django应用程序,设置重置密码时遇到问题。我得到以下错误: 带参数“()”和关键字的“密码重置确认”相反 参数“{u'uidb64':'MQ',u'token':u'49v-cabad3fe98f5d9f64377'}” 没有找到。已尝试0个模式: 这是我的密码重置email.html文件,它是: Someone asked for password reset for email {{ email }}. Follow the link below: {{ protocol}}:

我正在开发Django应用程序,设置重置密码时遇到问题。我得到以下错误:

带参数“()”和关键字的“密码重置确认”相反 参数“{u'uidb64':'MQ',u'token':u'49v-cabad3fe98f5d9f64377'}” 没有找到。已尝试0个模式:

这是我的密码重置email.html文件,它是:

Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
我在url.py中有以下内容

(r'^registration/password_reset_confirm', 'django.contrib.auth.views.password_reset_confirm',
    {'template_name' : 'coursework/password_reset_confirm.html',
     'set_password_form' : SetPasswordForm,
     'post_reset_redirect' : 'coursework.views.list_comments'}),
(r'^registration/password_reset_done', 'django.contrib.auth.views.password_reset_done',
    {'template_name' : 'coursework/index.html'}),
(r'^registration/password_reset', 'django.contrib.auth.views.password_reset',
    {'password_reset_form' : PasswordResetForm,
     'template_name' : 'coursework/reset_password.html',
     'email_template_name' : 'coursework/password_reset_email.html',
     'subject_template_name' :'coursework/password_reset_subject.txt',
     'post_reset_redirect' : 'coursework.views.list_comments'}),
很明显,我在做一些愚蠢的事情,但我无法解决它

添加堆栈跟踪

Environment:


Request Method: POST
Request URL: http://localhost:23080/registration/password_reset

Django Version: 1.9
Python Version: 2.7.11
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'coursework')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')



Traceback:

File "C:\FCA\lib\django\core\handlers\base.py" in get_response
  134.                 resolver_match = resolver.resolve(request.path_info)

File "C:\FCA\lib\django\core\urlresolvers.py" in resolve
  374.             for pattern in self.url_patterns:

File "C:\FCA\lib\django\utils\functional.py" in __get__
  33.         res = instance.__dict__[self.name] = self.func(instance)

File "C:\FCA\lib\django\core\urlresolvers.py" in url_patterns
  417.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)

File "C:\FCA\lib\django\utils\functional.py" in __get__
  33.         res = instance.__dict__[self.name] = self.func(instance)

File "C:\FCA\lib\django\core\urlresolvers.py" in urlconf_module
  410.             return import_module(self.urlconf_name)

File "C:\Python27\lib\importlib\__init__.py" in import_module
  37.     __import__(name)

Exception Type: SyntaxError at /registration/password_reset
Exception Value: invalid syntax (urls.py, line 24)

您的模式不接受
uidb64
token
参数。将其更改为:

(r'^registration/password_reset_confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 'django.contrib.auth.views.password_reset_confirm',
 {'template_name' : 'coursework/password_reset_confirm.html',
  'set_password_form' : SetPasswordForm,
  'post_reset_redirect' : 'coursework.views.list_comments'},
 name='password_reset_confirm'),
(r'^registration/password\u reset\u confirm/(?P[0-9A-Za-z\-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$,'django.contrib.auth.views.password\u reset\u confirm',
{'template_name':'coursework/password_reset_confirm.html',
“设置密码形式”:设置密码形式,
“post_reset_redirect”:“coursework.views.list_comments”},
name='password\u reset\u confirm'),

我发布这个答案是为了帮助其他有同样问题的人。 我也犯了同样的错误,在互联网上做了所有建议的解决方案,但运气不好

最后,多亏了这个帮助,它成功了


解决方案:添加
url(r'^',包括('django.contrib.auth.url'),
mainProject>url.py

您的
密码重置\u确认视图不带关键字参数。您应该在url正则表达式中对一些进行编码,例如:
r'^registration/password\u reset\u confirm/(?P\w+)/(?P\w+)
我刚刚尝试了这个方法,但仍然会遇到同样的错误-我想您已经发现了一些可能是我会收到的下一个错误。@HenryM我还发现您也缺少
name=
参数。请参阅我的更新答案。这给了我一个无效的语法错误,行名为class='password\u reset\u confirm',我对此进行了测试,语法是有效的。请发布错误消息的堆栈跟踪。我已在问题中发布了堆栈跟踪。这是因为我在Google Appengine上运行pyhton 2.7吗?如果您使用自定义模板或自定义身份验证,则需要将此URL添加到URL.py的底部。但它必须位于引入PasswordResetConfirmView的url之前。不幸的是,它迫使我们使用基本django模板进行输入新密码的实际操作。