提问者:小点点

不允许方法(POST):/password_change_done


我是Django/Python新手

我正在尝试更改用户密码,但我收到错误

Method Not Allowed (POST): /password_change_done
Method Not Allowed: /password_change_done
[23/Jul/2020 19:11:05] "POST /password_change_done HTTP/1.1" 405 0   

这是我的url模式,仅用于更改密码:

 path('password_change',
    auth_views.PasswordChangeView.as_view(template_name='password_change.html'),
    name='password_change'),

    path('password_change_done',
    auth_views.PasswordChangeDoneView.as_view(template_name='password_change_done.html'),
    name='password_change_done'),

此操作的两个html页面我的html代码:password_change

{% load static %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome</title>
</head>
<body>
    <h3> Change Password</h3>
     
    <form action="{% url 'password_change_done' %}" method="POST" class="form-signin">{% csrf_token %}

        <input name="Old password" class="form_control" placeholder="Old password"
        type="password" id=old_password required="true">
        <input name="new password" class="form_control" placeholder="new password"
        type="password" id=new_password required="true">
        <input name="confirm password" class="form_control" placeholder="confirm password"
        type="password" id=confirm_password required="true">
        

        <button  type="submit">Update</button>
    </form>
</body>
</html>

我的password_chang_done的html代码:

{% load static %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome</h1>
    <h2> <img src="{% static 'images/welcome.jpg'  %}"> </h2>
    
    <h5>hello,{{request.user.username}}</h5>
    <script>
        window.alert("password sucessfully changed")
    </script>


</body>
</html>

共1个答案

匿名用户

您应该向password_change端点发出POST请求,而不是向password_change_done`端点发出POST请求,因此:

<form action="{% url 'password_change' %}" method="POST" class="form-signin">
    …
</form>

在Django web开发中,以及在一般的web开发中,向第一次生成带有GET请求的页面的同一视图发送POST是相当常见的。