django-klassbaserade-auth-vyer är en reimplementation av django.contrib.auth.views som klassbaserade vyer & nbsp;. Förhoppningsvis någon gång detta projekt eller något liknande kommer att göra det i django korrekt.
För närvarande har endast LoginView genomförs. De andra kommer att följa.
Installation
PIP installera django-klassbaserade-auth-visningar
Grundläggande användning
I stället för att ta django.contrib.auth.login i din urls.py, bara använda den som tillhandahålls av detta projekt. urls.py:
från class_based_auth_views.views import LoginView
urlpatterns = mönster ('',
& Nbsp; url (r '^ inloggning / $ ", LoginView.as_view (form_class = EmailAsUsernameAuthenticationForm), name =" logga in "),
)
Utöka LoginView Exempel
Nu när LoginView baseras på generiska klass baserade vyer det är mycket lättare att förlänga. Säg att du behöver för att genomföra en 2 steg inloggningsprocedur med en engångslösenord:
från django.contrib.auth import inloggning
klass PhaseOneLoginView (LoginView):
& Nbsp; def form_valid (själv, form):
& Nbsp; "" "
& Nbsp; Maktens superanvändare att logga in i en process 2 steg (One Time Password). Andra användare är inloggad normalt
& Nbsp; "" "
& Nbsp; user = form.get_user ()
& Nbsp; om user.is_superuser:
& Nbsp; self.save_user (användare)
& Nbsp; tillbaka HttpResponseRedirect (self.get_phase_two_url ())
& Nbsp; annan:
& Nbsp; inloggning (self.request, användare)
& Nbsp; tillbaka HttpResponseRedirect (self.get_success_url ())
& Nbsp; def get_phase_two_url (egen):
& Nbsp; retur bakåt ("phase_two_login)
& Nbsp; def save_user (själv, användare):
& Nbsp; self.request.session ['otp_user'] = user
klass PhaseTwoLoginView (Formview):
& Nbsp; form_class = OTPTokenForm
& Nbsp; def get_user (egen):
& Nbsp; retur self.request.session.get (otp_user ", None)
& Nbsp; def clean_user (egen):
& Nbsp; om "otp_user" i self.request.session:
& Nbsp; del self.request.session ['otp_user']
& Nbsp; def form_valid (själv, form):
& Nbsp; kod = form.cleaned_data.get ("koden")
& Nbsp; user = self.get_user ()
& Nbsp; inloggning (begäran, användare)
Krav :
- Python
Kommentarer hittades inte