django.contrib.auth.views的基于类的视图的重实现。
项目描述
安装
pip install django-class-based-auth-views
基本用法
无需将django.contrib.auth.login包含到您的urls.py中,只需使用本项目提供的即可。urls.py
from class_based_auth_views.views import LoginView, LogoutView
urlpatterns = patterns('',
url(r'^login/$', LoginView.as_view(form_class=EmailAsUsernameAuthenticationForm), name="login"),
url(r'^logout/$', LogoutView.as_view(), name="logout"),
)
请注意,注销视图实际上需要通过POST操作来注销。因此,registration/logout.html模板应包含一个带有提交按钮的表单。
扩展LoginView示例
由于LoginView现在是基于基于类的通用视图,因此扩展它变得更加容易。比如说,你需要实现一个带有一次性密码的2步登录过程。
from django.contrib.auth import login
class PhaseOneLoginView(LoginView):
def form_valid(self, form):
"""
Forces superusers to login in a 2 step process (One Time Password). Other users are logged in normally
"""
user = form.get_user()
if user.is_superuser:
self.save_user(user)
return HttpResponseRedirect(self.get_phase_two_url())
else:
login(self.request, user)
return HttpResponseRedirect(self.get_success_url())
def get_phase_two_url(self):
return reverse('phase_two_login')
def save_user(self, user):
self.request.session['otp_user'] = user
class PhaseTwoLoginView(FormView):
form_class = OTPTokenForm
def get_user(self):
return self.request.session.get('otp_user', None)
def clean_user(self):
if 'otp_user' in self.request.session:
del self.request.session['otp_user']
def form_valid(self, form):
code = form.cleaned_data.get('code')
user = self.get_user()
login(request, user)
项目详情
关闭
django-class-based-auth-views-0.4.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 52f9fe1576fbb5fff20c26a5f8db8280342e6925644af73fdd0cf37848745269 |
|
| MD5 | fefe3d4ca54357ef36e02b606cd657b8 |
|
| BLAKE2b-256 | ffc008d972d24cbb67f4139deb2b5c2ef02dada60a71b4be477ef687f88c962d |
关闭
django_class_based_auth_views-0.4-py2-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 466b68f5ff345b88b75db1959de3032cfa7f0fab0d5aa0765373f825f692e8f0 |
|
| MD5 | 1a9fcb50937fd92d16fe4803ecfd5c14 |
|
| BLAKE2b-256 | 433cf984270c2193161451fbe36b171537f5f3f1fe2e2cef34ffc1c142e9c3ae |