Python Django更改密码问题,super(类型,obj):obj必须是类型的实例或子类型
我的changepassword表单遇到了一些问题,它继续给我相同的错误:super(type,obj):obj必须是type的实例或子类型 这是我的表格:Python Django更改密码问题,super(类型,obj):obj必须是类型的实例或子类型,python,django,passwords,Python,Django,Passwords,我的changepassword表单遇到了一些问题,它继续给我相同的错误:super(type,obj):obj必须是type的实例或子类型 这是我的表格: class PasswordChangeForm(forms.Form): current_password = forms.CharField(label=u'Current Password', widget=forms.PasswordInput(render_value=False)) new_password =
class PasswordChangeForm(forms.Form):
current_password = forms.CharField(label=u'Current Password', widget=forms.PasswordInput(render_value=False))
new_password = forms.CharField(label=u'New Password', widget=forms.PasswordInput(render_value=False))
retyped_password = forms.CharField(label=u'Retype New Password', widget=forms.PasswordInput(render_value=False))
def __init__(self, data=None, user=None, *args, **kwargs):
self.user = user
super(UserProfileEditForm, self).__init__(data=data, *args, **kwargs)
def clean_current_password(self):
cleaned_data = self.cleaned_data
current_password = cleaned_data.get('current_password', '')
if not self.user.check_password(current_password):
raise ValidationError('Wrong current password.')
return current_password
def clean(self):
cleaned_data = self.cleaned_data
new_password = cleaned_data.get('new_password', '')
retyped_password = cleaned_data.get('retyped_password', '')
if len(new_password) == 0 or len(retyped_password) == 0:
raise ValidationError('Blank password fields.')
if new_password != retyped_password:
raise ValidationError('New password and retyped password do not match.')
return cleaned_data
def save(self):
self.user.set_password(new_password)
return self.user
有什么想法吗?您的问题在这一行:
super(UserProfileEditForm, self).__init__(data=data, *args, **kwargs)
应该是
super(PasswordChangeForm, self).__init__(data=data, *args, **kwargs)
当您从另一个表单复制时,这可能是一个复制粘贴问题
还有一些谢谢,我还有一个小问题……在表单上没问题,但当我调用save函数时,它会说全局新密码不是definedy您需要执行
new\u password=self.cleanned\u data.get('new\u password')