2017-10-10 2 views
1

Verwenden der klassenbasierten Ansicht FormView Ich möchte auf eine andere Seite umleiten, wenn ein Benutzer bereits aktiviert ist.Wie wird beim Laden eines FormView umgeleitet?

Also versuchte ich habe das Überschreiben der get_form_kwargs Funktion:

class UserActivateView(AnonymousRequiredMixin, FormView): 
    ... 
    def get_form_kwargs(self): 
     .... 
     if profile.activated: 
       # User is already activated an can log in 
       messages.info(
        self.request, 
        'You are already activated. ' 
        'Login or click forgot password if you have forgotten' 
       ) 
       redirect(to=reverse_lazy('auth_login')) 
     .... 
     return kwargs 

Mit dieser Methode der Nachricht hinzugefügt wird, aber die Umleitung wird nie geschehen.

Bin ich an der richtigen Stelle diese Umleitung zu tun, habe ich ccbv als Referenz

+1

Nein, Sie sind nicht. 'get_form_kwargs' ist für, nun, die Form kwargs. Dies sollte in den Methoden geschehen, die für das Zurückgeben der Antwort verantwortlich sind, dh "Versenden" oder "Holen" und "Posten". Beachten Sie, dass Sie die Weiterleitung auch tatsächlich zurückgeben müssen. –

Antwort

1

Vielleicht könnten Sie user_passes_test() decorator verwenden benutze und dekorieren die dispatch() Methode Ihrer CBV

oder außer Kraft setzen nur dispatch() Verfahren so Sie können Ihre Nachricht einfügen

+0

Der 'user_passes_test' leitet zur Anmeldung um und versucht stattdessen die Dispatch Override. – surfer190

+0

' user_passes_test' nimmt ein optionales 'login_url' Argument, so dass Sie nicht auf die Login Seite umleiten müssen. – Alasdair

+0

@ surfer190, war es hilfreich die Antwort? hast du es geschafft, von dort erfolgreich umzuleiten? – efkin