Col*_*len 5 django django-forms
我最近通过子类化抽象用户实现了我自己的用户模型.
class NewUserModel(AbstractUser):
我这样做后PasswordChangeForm停止了工作.我UserCreationForm通过覆盖class Meta:模型字段修复了问题.但是,ChangePasswordForm它没有指定模型,我看不出为什么它不适用于新用户模型的任何原因.
views.py
class PasswordChangeView(LoginRequiredMixin, FormView):
template_name = 'change_password.html'
form_class = PasswordChangeForm
def get_form_kwargs(self):
kwargs = super(PasswordChangeView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
Run Code Online (Sandbox Code Playgroud)
小智 8
只是花了大部分时间试图实现这一目标.最终我发现使用FBV实现它非常简单:
@login_required
def UpdatePassword(request):
form = PasswordChangeForm(user=request.user)
if request.method == 'POST':
form = PasswordChangeForm(user=request.user, data=request.POST)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
return render(request, 'user/password.html', {
'form': form,
})
Run Code Online (Sandbox Code Playgroud)
CBV版本:
类PasswordChangeView(LoginRequiredMixin,FormView):
模型 = 自定义用户
form_class = 密码更改表单
模板名称 = '密码更改.html'
def get_form_kwargs(self):
kwargs = super(PasswordChangeView, self).get_form_kwargs()
kwargs['用户'] = self.request.user
如果 self.request.method == 'POST':
kwargs['data'] = self.request.POST
返回夸格斯
def form_valid(自我, 形式):
表单.save()
update_session_auth_hash(self.request, form.user)
返回 super(PasswordChangeView, self).form_valid(form)
| 归档时间: |
|
| 查看次数: |
3597 次 |
| 最近记录: |