python - 升级 Django 和 NoReverseMatch 密码错误

标签 python django

我正在尝试将旧版本 Django 1.5 升级到更新版本。 升级后,当我进入密码重置页面时,Django 给我错误:

TypeError at /accounts/password/reset/

password_reset() got an unexpected keyword argument 'post_change_redirect'

Request Method: GET TypeErrorRequest URL: http://localhost:8000/accounts/password/reset/ Django Version: 1.6.11 Exception Type: TypeError Exception Value:

password_reseteset() got an unexpected keyword argument 'post_change_redirect'

Exception Location: /home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/utils/decorators.py in _wrapped_view, line 99 Python Executable: /home/martin/Work/wisepress.com/virtualenv/bin/python Python Version: 2.7.8

--

Traceback: File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 112. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/martin/Work/wisepress.com/eshopwisepress/wp_auth/views.py" in passwd_reset 109. return password_reset(request, *args, **kwargs) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 99. response = view_func(request, *args, **kwargs) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/contrib/auth/views.py" in password_reset 142. post_reset_redirect = reverse('password_reset_done') File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in reverse 536. return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix 456. (lookup_view_s, args, kwargs, len(patterns), patterns))

Exception Type: NoReverseMatch at /accounts/password/reset/ Exception Value: Reverse for 'password_reset_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

在 urls.py 中我有:

      url(r'^password/reset/done/$', 'django.contrib.auth.views.password_reset_done', name='passwd_reset_done'),
      url(r'^password/reset/confirm/(?P<uidb36>\w+)/(?P<token>[\d\w-]+)/$', 'django.contrib.auth.views.password_reset_confirm_uidb36', name='passwd_reset_confirm'),
      url(r'^password/reset/completed/$', 'django.contrib.auth.views.password_reset_complete', name='passwd_reset_complete'),
      url(r'^password/reset/$', passwd_reset, {'template_name':'emailing/registration-activation/password_reset_email.html'}, name='password_reset'),

在 views.py 中我有:

from django.contrib.auth.views import password_reset

def passwd_reset(request, *args, **kwargs):
    kwargs['password_reset_form'] = PasswdResetForm
    kwargs['email_template_name'] = 'emailing/registration-activation/password_reset_email.html'
    kwargs['from_email'] = FROM_EMAIL
    return password_reset(request, *args, **kwargs)

在 Django 1.5 中它工作正常,但在较新的版本中给我错误。 你知道有人怎么修吗?? 谢谢

编辑: 我在 urls.py 中更改了一些用于重置密码的 url。现在在那里:

    url(r'^password/reset/done/$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'),
    url(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', name='password_reset_confirm'),
    url(r'^password/reset/completed/$', 'django.contrib.auth.views.password_reset_complete', name='password_reset_complete'),
    url(r'^password/reset/$', passwd_reset, {'template_name':'emailing/registration-activation/password_reset_email.html'}, name='password_reset'),

现在我有错误:

Template error: In template /home/martin/Work/wisepress.com/eshopwisepress/templates/emailing/registration-activation/password_reset_email.html, error at line 44

> Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb64': '', u'token': ''}' not found. 1 pattern(s) tried: ['accounts/password/reset/confirm/(?P\w+)/(?P[\d\w-]+)/$']

第 44 行现在:

<a href="{{ protocol }}://{{ site_name }} {% url 'django.contrib.auth.views.password_reset_confirm' uidb64=uid token=token %} " target="_blank" style="color: #68b58e; text-decoration: none; font-style: italic;">Reset password</a><br/><br/>

--

Traceback: File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 137. response = response.render() File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/response.py" in render 105. self.content = self.rendered_content File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/response.py" in rendered_content 82. content = template.render(context) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/base.py" in render 140. return self._render(context) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 447. six.reraise(*exc_info) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 433. url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in reverse 536. return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) File "/home/martin/Work/wisepress.com/virtualenv/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix 456. (lookup_view_s, args, kwargs, len(patterns), patterns))

Exception Type: NoReverseMatch at /accounts/password/reset/ Exception Value: Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb64': '', u'token': ''}' not found. 1 pattern(s) tried: ['accounts/password/reset/confirm/(?P\w+)/(?P[\d\w-]+)/$']

最佳答案

在你的password_reset url 模式,template_name 不应与您的 email_template_name 相同。 template_name 是一个向用户显示密码重置表单的模板。

关于python - 升级 Django 和 NoReverseMatch 密码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625997/

相关文章:

Python变量字符串错误

python - 使用 pyinstaller 编译为单个 exe 时找不到 .Kv 文件

python - 南迁 myapp 0001 --fake

python - 如何将命名空间 url 添加到 django-rest-framework 路由器 View 集中

django - 如何让 Django REST 身份验证工作?

python - Django : RunTimeWarning : DateTimeField received a naive datetime while time zone support is active

python - Django 属性错误。 'module' 对象没有属性 'rindex'

python - 有什么方法可以让 argparse.ArgumentParser.parse_args() 在参数错误时不退出?

jquery - Flask AJAX 自动完成

python - 如何解析pandas中不规则的日期格式?