django-class-based-auth-views là một reimplementation của django.contrib.auth.views như quan điểm dựa trên lớp & nbsp;. Hy vọng rằng tại một số điểm dự án này hay cái gì đó tương tự sẽ được đưa vào django thích hợp.
Hiện nay chỉ có LoginView được thực hiện. Những người khác sẽ làm theo.
Cài đặt
pips cài đặt django-class-based-auth-views
sử dụng cơ bản
Thay vì bao gồm django.contrib.auth.login vào urls.py của bạn, chỉ cần sử dụng một trong những cung cấp bởi dự án này. urls.py:
từ class_based_auth_views.views nhập khẩu LoginView
urlpatterns = mẫu ('',
& Nbsp; url (r '^ đăng nhập / $', LoginView.as_view (form_class = EmailAsUsernameAuthenticationForm), name = "đăng nhập"),
)
Mở rộng LoginView Ví dụ
Bây giờ LoginView đó là dựa trên quan điểm dựa lớp chung nó là dễ dàng hơn nhiều để mở rộng. Giả sử bạn cần phải thực hiện một thủ tục đăng nhập 2 bước với một mật khẩu một lần:
từ nhập khẩu đăng nhập django.contrib.auth
lớp PhaseOneLoginView (LoginView):
& Nbsp; def form_valid (self, mẫu):
& Nbsp; "" "
& Nbsp; Lực lượng superusers để đăng nhập trong một quá trình 2 bước (One Time Password). Người sử dụng khác phải được đăng nhập bình thường
& Nbsp; "" "
& Nbsp; user = form.get_user ()
& Nbsp; nếu user.is_superuser:
& Nbsp; self.save_user (người sử dụng)
& Nbsp; return HttpResponseRedirect (self.get_phase_two_url ())
& Nbsp; khác:
& Nbsp; đăng nhập (self.request, người dùng)
& Nbsp; return HttpResponseRedirect (self.get_success_url ())
& Nbsp; def get_phase_two_url (tự):
& Nbsp; trở lại đảo ngược ('phase_two_login')
& Nbsp; def save_user (self, người sử dụng):
& Nbsp; self.request.session ['otp_user'] = người dùng
lớp PhaseTwoLoginView (FormView):
& Nbsp; form_class = OTPTokenForm
& Nbsp; def get_user (tự):
& Nbsp; trở self.request.session.get ('otp_user', None)
& Nbsp; def clean_user (tự):
& Nbsp; nếu 'otp_user' trong self.request.session:
& Nbsp; del self.request.session ['otp_user']
& Nbsp; def form_valid (self, mẫu):
& Nbsp; code = form.cleaned_data.get (mã '')
& Nbsp; user = self.get_user ()
& Nbsp; đăng nhập (yêu cầu, người sử dụng)
Yêu cầu :
- Python
Bình luận không