【问题标题】:Error with system for email password resets电子邮件密码重置系统出错
【发布时间】:2018-07-21 15:20:49
【问题描述】:

我在创建使用电子邮件重置密码的系统时遇到了问题。我昨天遇到了一个我无法解决的问题: NoReverseMatch error with password reset emails

在阅读了一些相关文档后,我尝试将视图替换为 1.11 中引入的基于类的等效项,如下所示:

urls.py:

from django.contrib.auth import views as auth_views

urlpatterns = [
    url(r'^$', auth_views.login, name='login'),
    url(r'^logout/$', auth_views.logout, name='logout'),

    ## more irrelevant urls here ##
    url(r'^password/reset/done/$', auth_views.PasswordResetDoneView, name='password_reset_done'),
    url(r'^password/reset/$', auth_views.PasswordResetView, name='password_reset'),
    url(r'^password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.PasswordResetConfirmView, name='password_reset_confirm'),
    url(r'^password/reset/complete/$', auth_views.PasswordResetCompleteView, name='password_reset_complete'),
]

这引入了一个不太有用的新错误:

Internal Server Error: /password/reset/
Traceback (most recent call last):
  File "C:\python\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
    response = get_response(request)
  File "C:\python\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\python\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: __init__() takes 1 positional argument but 2 were given
[11/Feb/2018 12:35:38] "GET /password/reset/ HTTP/1.1" 500 62168

我怎样才能让我的系统正常工作?

【问题讨论】:

    标签: python django forgot-password


    【解决方案1】:

    您需要在 url.py 中为基于类的视图调用 as_view 方法:

    url(r'^password/reset/done/$', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
    url(r'^password/reset/$', auth_views.PasswordResetView.as_view(), name='password_reset'),
    url(r'^password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    url(r'^password/reset/complete/$', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
    

    【讨论】:

    • 感谢您的回答,这已经奏效。 password_resetpassword_reset_confirm 现在可以正常工作并且正在重置密码,但我现在在渲染 password_reset_completepassword_reset_done 时遇到 NoReverseMatch 错误。你知道这是为什么吗?
    • @cbuch1800 你能发布完整的回溯吗?可能这可以帮助stackoverflow.com/questions/35445845/…
    • 该链接中的问题看起来确实相似,但我没有发现答案有帮助。我创建了一个包含这些错误的完整回溯的新问题:stackoverflow.com/questions/48730677/…
    猜你喜欢
    • 2017-01-16
    • 2017-09-02
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2018-07-21
    • 1970-01-01
    • 2015-11-26
    相关资源
    最近更新 更多