django-klasowe-auth-odsłon jest reimplementacja django.contrib.auth.views jak widokiem na bazie klasy. & Nbsp; Mam nadzieję, że w pewnym momencie tego projektu lub coś podobnego będzie go w django właściwego.
Obecnie realizowany jest wyłącznie LoginView. Pozostali pójdą.
instalacji
pip install-Based-auth-widoki django-klasy
Podstawowe użycie
Zamiast w tym django.contrib.auth.login do swojej urls.py, wystarczy użyć jednego dostarczone przez ten projekt. urls.py:
z class_based_auth_views.views importu LoginView
urlpatterns = patterns ('',
& Nbsp; url (r '^ logowanie / $', LoginView.as_view (form_class = EmailAsUsernameAuthenticationForm), name = "login"),
)
Rozszerzenie LoginView Przykład
Teraz, LoginView opiera się na podstawie widoków klasy generycznej jest on o wiele łatwiej jest zwiększyć. Powiedzmy, że należy wdrożyć procedurę logowania 2 kroku z hasłem jednorazowym:
z django.contrib.auth importu logowania
Klasa PhaseOneLoginView (LoginView):
& Nbsp; def form_valid (self, forma):
& Nbsp; "" "
& Nbsp; administratorami sił, aby zalogować się w procesie 2 etapu (One Time Password). Inni użytkownicy jesteś zalogowany normalnie
& Nbsp; "" "
& Nbsp; user = form.get_user ()
& Nbsp; jeśli user.is_superuser:
& Nbsp; self.save_user (użytkownik)
& Nbsp; powrócić HttpResponseRedirect (self.get_phase_two_url ())
& Nbsp; dalej:
& Nbsp; logowania (self.request, użytkownika)
& Nbsp; powrócić HttpResponseRedirect (self.get_success_url ())
& Nbsp; def get_phase_two_url (self):
& Nbsp; powrót do tyłu ("phase_two_login")
& Nbsp; def save_user (self, użytkownika):
& Nbsp; self.request.session ['otp_user'] = user
Klasa PhaseTwoLoginView (FormView):
& Nbsp; form_class = OTPTokenForm
& Nbsp; def get_user (self):
& Nbsp; return self.request.session.get ("otp_user" Brak)
& Nbsp; def clean_user (self):
& Nbsp; "otp_user" w self.request.session:
& Nbsp; del self.request.session ['otp_user']
& Nbsp; def form_valid (self, forma):
& Nbsp; kod = form.cleaned_data.get ("Kod")
& Nbsp; user = self.get_user ()
& Nbsp; logowania (wniosek, użytkownik)
Wymagania :
- Python
Komentarze nie znaleziono