Где правильное место для реализации функции «ВЫХОД» в PasswordChangeView? - PullRequest
0 голосов
/ 07 апреля 2019

Привет сообщество Stackoverflow.

Где лучше всего реализовать функцию LOGOUT в PasswordChangeView

Я пытался


class PasswordCorrectionView(SuccessMessageMixin, LoginRequiredMixin, PasswordChangeView):
    template_name = "admin/password_change.html”
    form_class = PwdChgForm

    def post(self, request, *args, **kwargs):
        logout(request)   # here
        return PasswordChangeView.post(self, request, *args, **kwargs)

но оно поднимается:

NotImplementedError at /account/password/change
Django doesn't provide a DB representation for AnonymousUser.

Это разумно, потому что я все равно не могу сохранить пароль AnonymousUser.

Так что вопрос в том, какой метод лучше переопределить здесь, в PasswordChangeView ???

Или второй вариант переопределить некоторый метод в формах:


class PwdChgForm(PasswordChangeForm):

    def save(self, commit=True):
        self.user.is_activated = False
        user_registrated.send(PwdChgForm, instance=self.user) # signal to the email sender
        PasswordChangeForm.save(self, commit=True)

Мне нужно, чтобы пользователь вышел из системы после того, как он ввел пароль (затем подтвердил его по электронной почте и т. Д.). Вся эта работа, кроме ВЫХОДА

1 Ответ

1 голос
/ 07 апреля 2019

Измените это

def post(self, request, *args, **kwargs):
        logout(request)   # here
        return PasswordChangeView.post(self, request, *args, **kwargs)

на

def post(self, request, *args, **kwargs):
    PasswordChangeView.post(self, request, *args, **kwargs)
    logout(request)   # here
    return redirect('your-login-url')
...