Django-osztály-alapú-auth-nézetek egy újraírását django.contrib.auth.views class alapú nézetek. & Nbsp; Remélhetőleg valamikor a projekt, vagy valami hasonló fog tenni a Django megfelelő.
Jelenleg csak LoginView hajtják végre. A többiek is követni fogja.
Telepítés
pip telepíteni Django-osztály-alapú-auth-nézetek
alapszintű kezelése
Ahelyett, beleértve django.contrib.auth.login be a urls.py, csak használja az egyik, amennyiben ez a projekt. urls.py:
re class_based_auth_views.views import LoginView
urlpatterns = minták ('',
& Nbsp; url (r '^ login / $ ", LoginView.as_view (form_class = EmailAsUsernameAuthenticationForm), name =" login "),
)
kiterjesztése LoginView példa
Most, hogy LoginView alapul generikus osztály alapú nézetek sokkal könnyebb kiterjeszteni. Mondja el, hogy végre kell hajtanunk a 2 bejelentkezéssel eljárás egy egyszeri jelszót:
re django.contrib.auth import bejelentkezés
osztály PhaseOneLoginView (LoginView):
& Nbsp; def form_valid (self, forma):
& Nbsp; "" "
& Nbsp; Forces felettes jelentkezned a 2 lépésből álló folyamat (One Time Password). A felhasználó be van jelentkezve általában
& Nbsp; "" "
& Nbsp; user = form.get_user ()
& Nbsp; Ha user.is_superuser:
& Nbsp; self.save_user (felhasználó)
& Nbsp; visszatérni HttpResponseRedirect (self.get_phase_two_url ())
& Nbsp; mást:
& Nbsp; login (self.request, felhasználó)
& Nbsp; visszatérni HttpResponseRedirect (self.get_success_url ())
& Nbsp; def get_phase_two_url (self):
& Nbsp; visszatér a fordított ("phase_two_login)
& Nbsp; def save_user (self, felhasználói):
& Nbsp; self.request.session ['otp_user'] = felhasználó
osztály PhaseTwoLoginView (FormView):
& Nbsp; form_class = OTPTokenForm
& Nbsp; def get_user (self):
& Nbsp; visszatérő self.request.session.get ("otp_user", Nincs)
& Nbsp; def clean_user (self):
& Nbsp; ha "otp_user" a 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 (kérésre felhasználó)
követelmények :
- Python
Hozzászólás nem található