NoReverseMatch при входе в систему с помощью сброса пароля Django

У меня есть небольшое приложение Django. Я настраиваю аутентификацию и только что закончил функциональность забытого/сброшенного пароля. Однако, когда пароль сброшен, он не перенаправляет на страницу успеха. Я просмотрел весь свой код и не могу найти никаких ссылок на 'login', которые были бы неправильно закодированы. Ошибка, которая появляется, выглядит следующим образом: 'Reverse for 'login' not found. 'login' не является допустимой функцией представления или именем шаблона'

Вот соответствующие файлы из моего проекта:

account urls.py

from django.urls import path, include, reverse_lazy
from django.contrib.auth import views as auth_views
from . import views

app_name = 'account'

urlpatterns = [
    #Login URLs
    path('login/', auth_views.LoginView.as_view(), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    #User Pages URLs
    path('dashboard/', views.dashboard, name='dashboard'),
    path('nodes/', include('nodes.urls')),
    #Password Changes URLs
    path('password_change/', auth_views.PasswordChangeView.as_view(success_url=reverse_lazy('account:password_change_done')), name='password_change'),
    path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
    #Password Reset URLs
    path('password_reset/',
            auth_views.PasswordResetView.as_view(success_url=reverse_lazy('account:password_reset_done')),
            name='password_reset'),
    path('password_reset/done/',
            auth_views.PasswordResetDoneView.as_view(),
            name='password_reset_done'),
    path('reset/<uidb64>/<token>/',
            auth_views.PasswordResetConfirmView.as_view(success_url=reverse_lazy('account:password_reset_complete')),
            name='password_reset_confirm'),
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]

password_reset_confirm.html:

{% block content %}
    <div class="page-title">
        <h1>Reset Password</h1>
    </div>
    <br>
    <div class="login-container">
        <div class="login-box">
            <br>
            <h3 style="text-align: center;">Reset your password</h3>
            <div class="login-form" style="text-align: center; ">
                {% if validlink %}
                    <p>Please enter your new password twice:</p>
                    <form method="post">
                        {{ form.as_p }}
                        {% csrf_token %}
                        <p><input type="submit" value="Change my password"/></p>
                    </form>
                {% else %}
                    <p>The password reset link was invalid, possibly because it has
                        already been used. Please request a new password reset link</p>
                {% endif %}
                </form>
            </div>
        </div>
    </div>

{% endblock %}

password_reset_done.html

{% block content %}
    <div class="page-title">
        <h1>Password Reset Confirmation</h1>
    </div>
    <br>
    <div class="login-container">
        <div class="login-box">
            <br>
            <h4 style="text-align: center;">An email has been sent to the email associated with your account, follow the link
            in the email to reset your password.</h4>
            <h4>If you do not receive an email, please try again and make sure you have entered the correct email</h4>
            </div>
        </div>
    </div>

{% endblock %}

В прошлом у меня были ошибки NoReverseMatch, и мне удавалось их исправить, но с этой я немного запутался

Любая помощь была бы замечательной!

Ваша текущая функциональность сброса пароля ожидает url с именем login. Вы определили представление входа в приложение, которое имеет имя app_name "account". Это создает пространство имен для всех урлов в этом модуле. Таким образом, ваше представление входа в систему имеет имя account:login.

Случайно ли у вас settings.LOGIN_URL установлено значение "login"? Скорее всего, что-то вызывает reverse("login") или {% url "login" %}. Изменение этого значения на "account:login" исправит ситуацию или перемещение представления входа в корень из пространства имен учетной записи будет работать.

Вернуться на верх