django 1.9 如何在通过 ajax 请求更改密码后保持会话

django 1.9 how to keep session after change password through ajax request

我有更新用户数据的功能ajax

def ajax_update(request):
    if request.method == 'POST':
    update_form = forms.UserUpdateForm(request.POST, instance=request.user)
    if update_form.is_valid():
        update_form.save()
        response['status'] = 'success'
        return JsonResponse(response)

和一个 UserUpdateForm

class UserUpdateForm(forms.ModelForm):

    class Meta:
        model = User
        exclude = ['password']

    def save(self, commit=True):
        instance = super(UserUpdateForm, self).save(commit=False)
        instance.set_password(self.cleaned_data['password_1'])
        instance.save()
        return instance

set_password执行并保存实例后,返回'success'消息。

但是,当我重新加载页面时,它的会话已过期

有没有办法在 ajax 更改密码后保持会话?

这是documented here。您应该使用 update_session_auth_hash() 函数。

但在这种情况下,您还应该更新 javascript 中的会话 cookie,因为会生成新的哈希值。