我已经准备好了视图和表单,以便编辑用户配置文件(姓名、姓氏、电子邮件和密码)。问题是,我可以更改用户配置文件(密码),但毕竟django重定向到login视图。看起来django在数据更改后注销了用户。但为什么呢?你知道吗
view.py
@login_required()
def edit_user_view(request):
template_name = "user_account/user_edit.html"
form = EditUserForm(request.POST or None, instance=request.user)
if form.is_valid():
new_user_data = form.save()
new_user_data.set_password(form.cleaned_data['new_password_1'])
new_user_data.save()
return HttpResponseRedirect('/user_account/user_edit/')
return render(request, template_name, {'form': form,
'edit_succes': True})
forms.py
class EditUserForm(forms.ModelForm):
class Meta:
model = User
fields = ['email', 'name', 'surname']
new_password_1 = forms.CharField(max_length=30, min_length=8)
new_password_2 = forms.CharField(max_length=30, min_length=8)
user_edit.html
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
从Django文档中,关于更改密码(https://docs.djangoproject.com/en/1.9/topics/auth/default/#changing-passwords):
这是一个标准过程,如果坚持不重新登录用户,则必须从中间件中删除SessionAuthenticationMiddleware。你知道吗
相关问题 更多 >
编程相关推荐