4

Django 2 で認証と表示をカスタマイズしようとしていますが、問題は、ユーザーが既に認証されている場合、ログイン フォームがまだ表示され、適切な URL にリダイレクトされないことです。これを克服するために、私は次のことを行いました:

class CustomLoginView(LoginView):

    form_class = LoginForm
    template_name = 'login.html'

    def get_initial(self):
        if self.request.user.is_authenticated and self.request.user.is_staff and has_2fa(self.request.user):
            return HttpResponseRedirect(reverse('{}'.format(self.request.GET.get('next', 'portal_home'))))
        else:
            return self.initial.copy()

    def form_valid(self, form):

        if self.request.user.is_staff and not has_2fa(self.request.user):
            logger.info('is staff but does not have 2FA, redirecting to Authy account creator')
            auth_login(self.request, form.get_user())
            return redirect('2fa_register')
        auth_login(self.request, form.get_user())

        return HttpResponseRedirect(self.get_success_url())

しかし、HttpResponseRedirectインはページget_initial()にリダイレクトしません/portal/。私も試しredirect('portal_home')ましたが、何も起こりませんか、カスタムを書く必要がありますdispatchか?

どんな助けでも大歓迎です。

4

2 に答える 2