我有一个文件forms.py,我在其中定义了所有表单。我需要在我的一个表单字段上进行密码验证。
在我的forms.py
中class ChangePasswordForm(forms.Form):
old_password = forms.CharField(widget=forms.PasswordInput)
new_password= forms.CharField(widget=forms.PasswordInput)
new_password_again= forms.CharField(widget=forms.PasswordInput)
def clean_old_password(self):
data = self.cleaned_data['old_password']
if data != currently_logged_in_user.password:
raise forms.ValidationError("Password Incorrect")
return data
我需要访问当前登录的用户,以便我可以使用currently_logged_in_user.password
进行验证,但我目前正在使用forms.py
而不是views.py
,所以我不知道该怎么做?请帮忙
答案 0 :(得分:2)
您需要将用户从视图传递到表单。你可以这样做:
views.py
my_form = ChangePasswordForm(user=request.user, data=request.POST)
...
forms.py
class ChangePasswordForm(forms.Form):
...
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(ChangePasswordForm, self).__init__(*args, **kwargs)
def clean_old_password(self):
old_password = self.cleaned_data['old_password']
if not self.user.check_password(old_password)
raise forms.ValidationError("Password Incorrect")
return old_password