使用login_required

时间:2016-07-29 17:19:39

标签: python django

我准备了视图和表单,目的是编辑用户个人资料(姓名,姓名,电子邮件和密码)。问题是我能够更改用户配置文件(密码),但毕竟django重定向到登录视图。看起来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>

1 个答案:

答案 0 :(得分:0)

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

  

更改用户密码将注销所有会话   SessionAuthenticationMiddleware已启用。请参阅会话失效   关于密码更改的详细信息。

这是一个标准程序,如果您坚持不重新使用用户,则必须从中间件中删除 SessionAuthenticationMiddleware