Django-class-based-auth-pohledy je reimplementace django.contrib.auth.views jako zobrazení na základě třídy. & Nbsp; Doufejme, že v určitém okamžiku tohoto projektu, nebo něco podobného, bude to do Django správné.
V současné době pouze LoginView je implementována. Ostatní budou následovat.
Instalace
Pip nainstalovat Django-class-based-auth-pohledy
Základní použití
Místo toho, včetně django.contrib.auth.login do vašeho urls.py, stačí použít jednu poskytované tímto projektem. urls.py:
od class_based_auth_views.views import LoginView
urlpatterns = vzory ('',
& Nbsp; url (r '^ přihlášení / $ ", LoginView.as_view (form_class = EmailAsUsernameAuthenticationForm), name =" login "),
)
Rozšíření LoginView Příklad
Teď, když LoginView je založen na názory založené generické třídy je mnohem jednodušší rozšířit. Řekněme, že budete muset implementovat 2 krok přihlašovací proceduru s jedním časovým hesla:
od django.contrib.auth import přihlášení
třída PhaseOneLoginView (LoginView):
& Nbsp; def form_valid (self, forma):
& Nbsp; "" "
& Nbsp; síly superuživatelů se přihlásit do 2 kroku procesu (One Time Password). Ostatní uživatelé jsou přihlášeni normálně
& Nbsp; "" "
& Nbsp; user = form.get_user ()
& Nbsp; pokud user.is_superuser:
& Nbsp; self.save_user (uživatel)
& Nbsp; návrat HttpResponseRedirect (self.get_phase_two_url ())
& Nbsp; jinak:
& Nbsp; login (self.request, uživatel)
& Nbsp; návrat HttpResponseRedirect (self.get_success_url ())
& Nbsp; def get_phase_two_url (self):
& Nbsp; návrat reverzní ("phase_two_login")
& Nbsp; def save_user (self, uživatel):
& Nbsp; self.request.session ['otp_user'] = user
třída PhaseTwoLoginView (FormView):
& Nbsp; form_class = OTPTokenForm
& Nbsp; def get_user (self):
& Nbsp; návrat self.request.session.get ("otp_user", None)
& Nbsp; def clean_user (self):
& Nbsp; v případě "otp_user 'v self.request.session:
& Nbsp; del self.request.session ['otp_user']
& Nbsp; def form_valid (self, forma):
& Nbsp; code = form.cleaned_data.get ('code')
& Nbsp; user = self.get_user ()
& Nbsp; login (požadavek, uživatel)
Požadavky na :
- Python
Komentáře nebyl nalezen