【发布时间】:2021-08-10 09:00:12
【问题描述】:
我可以检查new_password1和new_password2,但是我无法检查用户输入的旧密码是否正确。因为它没有给我 django 模板上的旧密码 ValidationError。请建议我可以在 forms.py 上使用的条件
这是forms.py
class ChangePasswordForm(forms.Form):
old_password = forms.CharField(
widget=forms.PasswordInput(
attrs={'class': 'form-control', 'placeholder': 'Password'}))
new_password1 = forms.CharField(
widget=forms.PasswordInput(
attrs={'class': 'form-control', 'placeholder': 'Password'}))
new_password2 = forms.CharField(
widget=forms.PasswordInput(
attrs={'class': 'form-control', 'placeholder': 'Password'}))
def set_user(self, user):
self.user = user
def clean(self):
old_password = self.cleaned_data.get('old_password')
valpwd = self.cleaned_data.get('new_password1')
valrpwd = self.cleaned_data.get('new_password2')
if not old_password:
raise forms.ValidationError({
'old_password':"You must enter your old password."})
elif valpwd != valrpwd:
raise forms.ValidationError({
'new_password1': 'Password Not Matched'})
return self.cleaned_data
这是views.py
class PasswordsChangeView(FormView):
template_name = 'dashboard/password/password_change.html'
form_class = ChangePasswordForm
success_url = reverse_lazy('dashboard:admin_login')
def get_form(self):
form = super().get_form()
form.set_user(self.request.user)
return form
这是 change_password.html
<form method="POST">
{% csrf_token %}
<div class="input-group mb-3">
<h6>Old Password</h6>{{form.old_password}}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
<span style="color:red">{{ form.old_password.errors }}</span>
<div class="input-group mb-3">
<h6>New Password</h6> {{form.new_password1}}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
<div class="input-group mb-3">
<h6>Re-Type Password</h6>
{{form.new_password2}}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
<span style="color:red">{{ form.new_password1.errors }}</span>
</div>
{% comment %} {{ form.as_p }} {% endcomment %}
<button class="btn btn-secondary" type="submit">Change Password</button>
</form>
【问题讨论】:
-
仅供参考:您可以使用内置的
PasswordChangeView
标签: django django-rest-framework django-views django-forms django-templates