gpt4 book ai didi

python - 如何在django中使用UpdateView更改用户密码

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:02 24 4
gpt4 key购买 nike

我有一些代码
1.当我尝试更改用户密码时,数据库中存储的密码是明文。
2、表单提交时未输入密码,数据库密码为空。

我该怎么办?谢谢

class UserUpdate(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
model = User
template_name = 'users/UserUpdate.html'
context_object_name = 'UserUpdate'
form_class = UserUpdateForm
success_url = reverse_lazy('UserList')
success_message = 'update success'

def form_valid(self, form):
password = form.cleaned_data.get('password')
if not password:
return super().form_valid(form)


return super().form_valid(form)

表格

class UserUpdateForm(ModelForm):

password = forms.CharField(
required=False, label="password",
max_length=32, strip=False,
widget=forms.PasswordInput,
)

class Meta:

model = User
fields = ['username', 'password', 'last_name', 'email', 'is_superuser', 'is_active']


def save(self, commit=True):
password = self.cleaned_data.get('password')
user = super().save(commit=commit)
if password:
user.reset_password(password)
else:
pass
return user

最佳答案

这里有一个例子: https://docs.djangoproject.com/en/2.1/topics/auth/default/#changing-passwords

如果您希望发布的代码起作用,可以在用户上使用 set_password()

user.set_password('new password')
user.save()

但是,正如 Timmy O'Mahony 所说,最好使用 https://docs.djangoproject.com/en/2.1/topics/auth/default/#module-django.contrib.auth.forms

关于python - 如何在django中使用UpdateView更改用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com