django 1.9 как сохранить сессию после смены пароля через ajax-запрос - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть функция для обновления пользовательских данных с помощью 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?

1 Ответ

0 голосов
/ 19 февраля 2019

Это задокументировано здесь .Вы должны использовать функцию update_session_auth_hash().

Но в этом случае вам также следует обновить cookie сеанса в вашем javascript, так как генерируется новый хеш.

...