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,因为会生成新的哈希值。
我有更新用户数据的功能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,因为会生成新的哈希值。