'SetPasswordForm'对象没有属性'save'-Django

日本

我正在尝试SetPasswordForm在Django上设置,但是尝试输入新密码时出现以下错误:'SetPasswordForm' object has no attribute ‘save’

有人知道如何正确配置吗?先感谢您!

forms.py:

class SetPasswordForm(forms.Form):
    password1 = forms.CharField(label='New password',
                                widget=forms.PasswordInput(
                                    attrs={'placeholder': 'New password'}))
    password2 = forms.CharField(label='Verify',
                                widget=forms.PasswordInput(
                                    attrs={'placeholder': 'Password again'}))

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(SetPasswordForm, self).__init__(*args, **kwargs)

    def clean_password2(self):
        password_length = settings.MIN_PASSWORD_LENGTH
        password1 = self.cleaned_data.get("password1")
        if len(password1) < password_length:
            raise forms.ValidationError(
                "Password must be longer than "
                "{} characters".format(password_length))
        password2 = self.cleaned_data.get("password2")
        if password1 and password2:
            if password1 != password2:
                raise forms.ValidationError("Passwords do not match")
        return password2

views.py:

@sensitive_post_parameters()
@never_cache
def password_reset_confirm(request, uidb64=None, token=None,
                           token_generator=default_token_generator):
    assert uidb64 is not None and token is not None
    try:
        uid = force_text(urlsafe_base64_decode(uidb64))
        user = MyUser._default_manager.get(pk=uid)
    except (TypeError, ValueError, OverflowError, MyUser.DoesNotExist):
        user = None

    if user is not None and token_generator.check_token(user, token):
        validlink = True
        form = SetPasswordForm(request.POST or None, user=user)
        if request.method == 'POST':
            if form.is_valid():
                form.save()  # Error traces back to here
                return HttpResponseRedirect(render("login"))
    else:
        validlink = False
        form = None
        messages.error(request, "Password reset unsuccessful")
    context = {
        'form': form,
        'validlink': validlink
    }
    return render(request, 'accounts/settings/password_set.html', context)
日本

我只需要在表单中添加以下内容:

def save(self, commit=True):
    self.user.set_password(self.cleaned_data['password2'])
    if commit:
        self.user.save()
    return self.user

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章