PasswordChangeView 未重定向到 PasswordChangeDoneView(或更改密码)

PasswordChangeView not redirecting to PasswordChangeDoneView (or changing the password)

我正在尝试使用 Django 身份验证视图。我的 login/logout 视图没有问题。

urls.py:

from django.urls import path
from django.contrib.auth import views as auth_views
from account import views

urlpatterns = [
    path('', views.dashboard, name = 'dashboard'),
    path('login/', auth_views.LoginView.as_view(), name = 'login'),
    path('logout/', auth_views.LogoutView.as_view(), name = 'logout'),
    path('password_change', auth_views.PasswordChangeView.as_view(), name = 'password_change'),
    path('password_change/done', auth_views.PasswordChangeDoneView.as_view(), name = 'password_change_done'),

]

password_change_form.html:

{% block body %}
  <h1>Change your password</h1>

    <p>Please use the following form to change your password:</p>
    <div class = 'password-change-form'>
      <form class="" action="{% url 'login' %}" method="post">
        {{ form.as_p }}
        {% csrf_token %}
        <input type="submit" name="" value="Change">
      </form>
    </div>

{% endblock %}

password_change_done.html:

{% block body %}
  <h1>Password Changed Successfully</h1>

{% endblock %}

我可以导航到 /password_change 并查看表单,但是当我填写并提交时,我被重定向到 /login(我确定我已经登录)并且密码不会改变。有谁知道问题是什么?

这是因为您为action="…"参数指定了{% url 'login' %},您需要将其更改为:

{% block body %}
  <h1>Change your password</h1>

    <p>Please use the following form to change your password:</p>
    <div class = 'password-change-form'>
      <form class="" action="<b>{% url 'password_change' %}</b>" method="post">
        {{ form.as_p }}
        {% csrf_token %}
        <input type="submit" name="" value="Change">
      </form>
    </div>

{% endblock %}