NoReverseMatch в / account / сброс пароля / для сброса пароля в Django - PullRequest
0 голосов
/ 01 января 2019

Ошибка - В Django после отправки электронного письма на странице «сброс пароля» я получаю эту ошибку.

NoReverseMatch в / account / сброс пароля / Обратный для 'password_reset_done'не найдено.'password_reset_done' не является допустимой функцией представления или именем шаблона.


Мой код в файле urls.py-

urlpatterns = [
    url(r'^password-reset/',
        auth_views.PasswordResetView.as_view(
            template_name='accounts/password_reset.html'),
        name='password_reset'),

    url(r'^password-reset/done/',
        auth_views.PasswordResetDoneView.as_view(
            template_name='accounts/password_reset_done.html'),
        name='password_reset_done'),

    url(r'^password-reset-confirm/<uidb64>/<token>/',
        auth_views.PasswordResetConfirmView.as_view(
            template_name='accounts/password_reset_confirm.html'),
        name='password_reset_confirm'),
]

Я также создал отдельные HTML-файлы для всех страниц в каталоге «account».Кстати, я следую этому руководству на YouTube - нажмите здесь

Url.py Скриншот кода

Снимок экрана ошибки

password_reset.html Снимок экрана

password_reset_done.html Снимок экрана

password_reset_confirm.html снимок экрана

Github: Нажмите здесь

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Проблема в том, что вы включили эти представления и шаблоны в отдельное приложение django, которое называется accounts.Когда вы разделяете представления и маршруты в отдельное приложение, все имена маршрутов, которые вы указали, будут иметь пространство имен .

Пространства имен URL позволяют уникальным образом изменять шаблоны именованных URL, даже если разные приложения используют одни и те же имена URL.Для сторонних приложений рекомендуется всегда использовать URL-адреса в пространстве имен (как мы делали в руководстве).Точно так же это также позволяет вам изменять URL-адреса, если развернуто несколько экземпляров приложения.Другими словами, поскольку несколько экземпляров одного приложения будут совместно использовать именованные URL-адреса, пространства имен обеспечивают способ разделения этих именованных URL-адресов.

По умолчанию пространство имен, назначенное этим маршрутам, будет именем приложения.(например, accounts), который вы установили в urls.py.Это означает, что полными именами для указанных вами представлений являются accounts:password_reset_done и т. Д. Таким образом, django не может найти искомый маршрут / представление, которое является пространством без имен password_reset_done.

Это можно исправить путем (1) перемещения представлений учетной записи / сброса пароля / учетной записи в приложение Dipesh_Pal и указания маршрутов в Dipesh_Pal/urls.py или (2) явной установки пространства имен '', когдав том числе accounts.urls в Dipesh_Pal/urls.py.

0 голосов
/ 01 января 2019

Как выглядит .html для url(r'^password-reset/done/',...)?

...