Ошибка системы для сброса пароля электронной почты

У меня возникли проблемы с созданием системы для сброса паролей с помощью электронной почты. Вчера я столкнулся с проблемой, которую не смог решить: ошибка NoReverseMatch с сообщениями о сбросе пароля

Прочитав некоторые из соответствующих документов, я попытался заменить представления эквивалентами на основе классов, представленными в 1.11, как показано ниже:

URL.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

Как я могу заставить свою систему работать?


person cbuch1800    schedule 11.02.2018    source источник


Ответы (1)


Вам нужно вызвать as_view для представления на основе классов в url.py:

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'),
person neverwalkaloner    schedule 11.02.2018
comment
Спасибо за ответ, это сработало. password_reset и password_reset_confirm теперь работают правильно и пароль сбрасывается, но теперь я получаю NoReverseMatch ошибки при рендеринге password_reset_complete и password_reset_done. Вы знаете, почему это так? - person cbuch1800; 11.02.2018
comment
@ cbuch1800, можете ли вы опубликовать полную трассировку? Вероятно, это может помочь stackoverflow.com/questions/ 35445845/ - person neverwalkaloner; 11.02.2018
comment
Проблема в этой ссылке выглядит похожей, но я не нашел ответ полезным. Я создал новый вопрос, который содержит полную трассировку этих ошибок: «ошибки noreversematch во время системы электронной почты с забытым паролем django»> stackoverflow.com/questions/48730677/ - person cbuch1800; 11.02.2018