Django-ταξικά-auth-θέα είναι ένα νέας υλοποίησης του django.contrib.auth.views τις απόψεις τάξη βασισμένη & nbsp?. Ας ελπίσουμε ότι κάποια στιγμή το έργο αυτό ή κάτι παρόμοιο θα το κάνει σε Django σωστή.
Επί του παρόντος, μόνο LoginView εφαρμόζεται. Θα ακολουθήσουν οι άλλοι.
installation
Pip εγκατάσταση Django-ταξικά-auth-απόψεις
Βασική χρήση
Αντί να συμπεριληφθούν django.contrib.auth.login σε urls.py σας, χρησιμοποιήστε μόνο το ένα που παρέχονται από αυτό το έργο. urls.py:
από class_based_auth_views.views LoginView εισαγωγής
urlpatterns = μοτίβα ('',
& Nbsp? Url (R '^ Είσοδος / $ », LoginView.as_view (form_class = EmailAsUsernameAuthenticationForm), name =" login "),
)
Η επέκταση LoginView Παράδειγμα
Τώρα που LoginView βασίζεται σε απόψεις που βασίζονται γενική τάξη είναι πολύ πιο εύκολο να επεκταθεί. Ας πούμε ότι πρέπει να εφαρμόσει ένα βήμα 2 διαδικασία σύνδεσης με έναν κωδικό πρόσβασης μία φορά:
από django.contrib.auth Είσοδος εισαγωγής
κατηγορία PhaseOneLoginView (LoginView):
& Nbsp? Def form_valid (self, μορφή):
& Nbsp? "" "
& Nbsp? Δυνάμεις υπερχρήστες να συνδεθείτε σε μια διαδικασία βήμα 2 (One Time Password). Οι άλλοι χρήστες συνδεδεμένοι κανονικά
& Nbsp? "" "
& Nbsp? User = form.get_user ()
& Nbsp? Αν user.is_superuser:
& Nbsp? Self.save_user (χρήστη)
& Nbsp? Επιστρέψει HttpResponseRedirect (self.get_phase_two_url ())
& Nbsp? Αλλού:
& Nbsp? Είσοδο (self.request, χρήστης)
& Nbsp? Επιστρέψει HttpResponseRedirect (self.get_success_url ())
& Nbsp? Def get_phase_two_url (αυτο):
& Nbsp? Αντίστροφη επιστροφή («phase_two_login»)
& Nbsp? Def save_user (self, χρήστης):
& Nbsp? Self.request.session [«otp_user '] = user
κατηγορία PhaseTwoLoginView (FormView):
& Nbsp? Form_class = OTPTokenForm
& Nbsp? Def get_user (αυτο):
& Nbsp? Self.request.session.get επιστροφή («otp_user», None)
& Nbsp? Def clean_user (αυτο):
& Nbsp? Αν «otp_user» στην self.request.session:
& Nbsp? Del self.request.session [«otp_user»]
& Nbsp? Def form_valid (self, μορφή):
& Nbsp? Κώδικας = form.cleaned_data.get («κώδικας»)
& Nbsp? User = self.get_user ()
& Nbsp? Είσοδο (αίτηση, χρήστης)
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε