当顾客注销的时候用

生机勃勃. 证实种类概要

  • create_user 创造顾客
  • authenticate 验证登入
  • login 记住客商的记名状态
  • logout 退出登入
  • is_authenticated 判定客商是不是登入
  • login_required 判定客商是或不是登陆的装饰器

二. 创造客商和表达登入

  1. 当顾客注册的时候用create_user(username,password,email)暗许意况下is_active=True,is_staff=False,is_superuser=False

    • 底层将password用hash算法加密之后存储到数据库中。
  2. 当顾客登陆的时候用authenticate(username=username,password=password)证实登陆,剖断数据库中是还是不是留存客户输入的账号和密码,再次来到叁个user对象。

    • 底层将password用hash算法加密后和数据库中password进行相比。

三. 记住顾客的报随处境

当顾客登入的时候用login(request,user)来记住客户的登入状态,私下认可将客户的id存款和储蓄在session中。

  • login有八个参数三个是request,三个是user,user的发源必须是authenticate返回的。也正是说用login事情未发生前必需先调用authenticate

四. 退出登入

当客商注销的时候用logout(request),只要求叁个参数request。

五. 推断顾客是或不是登陆

  1. 在后台的视图函数里能够用request.user.is_authenticated()推断客户是还是不是登陆
  2. 在前面三个页面中能够用{% if user.is_authenticated %}{% endif %}认清顾客是不是登陆

六. 装饰器判定用户是或不是登陆

  1. 基于普通的视图函数能够采纳@login_required来装饰,可是依据类视图的get和post方法无法一贯动用@login_required来装饰。
  2. 依据类视图的装点有以下两种:

    • 首先种:在urls文件中程导弹入login_requtred,间接装饰as_view()函数

    url(r'^$', login_required(UserInfoView.as_view()), name='user') 
    
    • 第三种:自定义叁个LoginRequiredView类继承View类,重写as_view()函数,并装饰as_view()函数的再次来到值。
      大家自定义的视图类就无需再持续View类,直接接轨LoginRequiredView类就好了。

        class LoginRequiredView(View):
            @classmethod
            def as_view(cls, **initkwargs):
                # 调用View类中as_view方法
                view = super(LoginRequiredView, cls).as_view(**initkwargs)
                # 调用login_required装饰器
                return login_required(view)
      
    • 其三种:自定义二个LoginRequiredMixin类,重写as_view()函数,调用View中的as_view()函数,并装饰as_view()函数的重回值。
      大家自定义的视图类须求先一而再LoginRequiredMixin类再持续View类。这种艺术的关键点在于:多三番四回中super()的调用顺序和__mro__的相继是平等的

        class LoginRequiredMixin(object):
            @classmethod
            def as_view(cls, **initkwargs):
                # 调用View类中as_view方法
                view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
      
                # 调用login_required装饰器
                return login_required(view)
      

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website