问题
我正在尝试使用 Django 内置身份验证功能更改密码,但它不会更改密码,甚至不会重定向到下一页。我已经粘贴了我为此编写的所有代码,请任何人都可以检查并告诉我我做错了什么。
form.py
class MyPasswordChangeForm(PasswordChangeForm):
old_password = forms.CharField(label=_("Old Password"),strip=False,widget=forms.PasswordInput(attrs={'autocomplete':'current-password', 'autofocus':True,'class':'form-control'}))
new_password1 = forms.CharField(label=_("New Password"),strip=False,widget=forms.PasswordInput(attrs={'autocomplete':'new-password','class':'form-control'}),help_text=password_validation.password_validators_help_text_html())
new_password2 = forms.CharField(label=_("Confirm New Password"),strip=False,widget=forms.PasswordInput(attrs={'autocomplete':'new-password','class':'form-control'}))
urls.py
path('passwordchange/',auth_views.PasswordChangeView.as_view(template_name='main/passwordchange.html',form_class=MyPasswordChangeForm, success_url='/passwordchangedone/'),name='passwordchange'),
passwordchange.html
{% extends 'main/base.html' %}
{% load static %}
{% block title %}Buy Now{% endblock title %}
{% block main-content %}
<div class="container my-5">
<div class="row">
<h3>Welcome {{request.user.username.title}}</h3>
<div class="col-sm-2 border-end">
<ul class="list-unstyled">
<li class="d-grid"><a href="{% url 'main:profile' %}" class="btn btn-primary">Change Password</a></li>
</ul>
</div>
<div class="col-sm-9 offset-sm-1">
<h3>Change Password</h3>
<hr>
<form action="" method=" post" novalidate class="shadow-sm p-5">
{% csrf_token %}
<!-- {{form.as_p}} -->
{% for fm in form %}
<div class="form-group">
{{fm.label_tag}}{{fm}}
<small class="text-danger">{{fm.errors|striptags}}</small><br>
</div>
{% endfor %}
<input type="submit" class="btn btn-primary mt-4" value="Save">
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<p class="alert alert-danger my-3">{{error}}</p>
{% endfor %}
{% endif %}
</form>
</div>
</div>
</div>
{% endblock main-content %}