Django用户配置文件编辑,需要登录

2024-04-26 23:15:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经准备好了视图和表单,以便编辑用户配置文件(姓名、姓氏、电子邮件和密码)。问题是,我可以更改用户配置文件(密码),但毕竟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>

Tags: django用户nameform视图密码newdata
1条回答
网友
1楼 · 发布于 2024-04-26 23:15:18

从Django文档中,关于更改密码(https://docs.djangoproject.com/en/1.9/topics/auth/default/#changing-passwords):

Changing a user’s password will log out all their sessions if the SessionAuthenticationMiddleware is enabled. See Session invalidation on password change for details.

这是一个标准过程,如果坚持不重新登录用户,则必须从中间件中删除SessionAuthenticationMiddleware。你知道吗

相关问题 更多 >