跳转到主要内容

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 (5.1 kB 查看哈希值)

上传时间 源代码

构建分布

django_class_based_auth_views-0.4-py2-none-any.whl (7.0 kB 查看哈希值)

上传时间 Python 2

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面