django - 如何在 Django 中更改密码
问题描述
我想在不使用默认视图的情况下更改 Django 密码。我通过了PasswordChangeForm
视图,但我不知道如何发布它。
class UpdateUserView(UpdateView):
model = User
template_name = 'test.html'
form_class = UserUpdateForm
success_url = '/'
def get_context_data(self, *args, **kwargs):
data = super().get_context_data(**kwargs)
data['PasswordChangeForm'] = PasswordChangeForm(self.request.user)
return data
def post(self, request, *args, **kwargs):
change_pw = User(password=request.POST.get('id_new_password1'))
change_pw.save()
def get_object(self):
return self.request.user
解决方案
您可以使用set_password()更改密码:
>>> from django.contrib.auth.models import User
>>> u = User.objects.get(username='john')
>>> u.set_password('new password')
>>> u.save()
在您看来:
...
def post(self, request, *args, **kwargs):
user = self.request.user
user.set_password(request.POST.get('id_new_password1'))
user.save()
return super().post(request, *args, **kwargs)
...
post()
我会使用方法而不是form_valid()
方法:
def form_valid(self,form):
user = self.object
user.set_password(form.cleaned_data.get("id_new_password1"))
user.save()
return super().form_valid(form)
推荐阅读
- javascript - 创建一列,该列是数据表中其他两列的总和
- javascript - 遍历 Array 中的 JSON 对象
- c# - 两个应用程序读/写时Redis数据不一致
- deep-learning - 独立于分辨率的 UNet 实现?
- c# - 使用 Xaramin 和 c# 向用户显示图像
- svn - 是否可以在 SVN Authz 文件中使用通配符?
- visual-studio-2010 - ITMS-90809:已弃用的 API 使用 - 即使应用了解决方案,仍会收到警告
- c# - 删除包含字符串的行并更改剩余行的值
- python - 将字符串连接/附加到文本文件中的数字列表
- node.js - 如何从 mongoDB 数据库中的 express 模块中导出