zoukankan      html  css  js  c++  java
  • Django 登录验证-自动重定向到登录页

    Web项目有些场景需要做用户登录验证,以便访问不同页面。

    方法一:login_required装饰器

    适用于函数视图。

    from django.contrib.auth.decorators import login_required
    
    """
    登录验证:
      如果验证未登录,用户自动重定向到登录页面login_url='/login/';
      如果验证成功,用户应当自动跳返到原来的路径,这个原来的路径默认存储在"next"查询参数中。
      redirect_field_name默认即为"next"。
    """
    
    @login_required(redirect_field_name='next', login_url='/login/')    # 当前视图所对应的请求path会自动放入"next"查询参数中
    def my_view(request):
      ...

    方法二:LoginRequiredMixin混入

    适用于类视图。

    from django.contrib.auth.mixins import LoginRequiredMixin
    from django.views.generic.base import View
    
    """
    登录验证:
      如果验证未登录,用户自动重定向到登录页面login_url='/login/';
      如果验证成功,用户应当自动跳返到原来的路径,这个原来的路径默认存储在"next"查询参数中。
      redirect_field_name默认即为"next"。
    """
    
    # 这个Mixin应该位于继承列表中最左边的位置。 
    class MyView(LoginRequiredMixin, View):
        # 重载属性。redirect_field_name默认即为"next",当前视图所对应的请求path会自动放入"next"查询参数中
        login_url = '/login/'
        redirect_field_name = 'next'
        ...

    关于Mixin类

    Mixin:在设计类的继承关系时,通常,主线都是单一继承下来的,如果需要"组合"额外的功能,通过多重继承就可以实现,这种设计通常称之为Mixin(混合)。
    Mixin类一般以Mixin为后缀,使用Mixin类实现多重继承需要注意:
    1)首先,它必须表示某一种辅助功能,而不是某个事物;
    2)其次,它必须功能单一,如果有多个功能,那就写多个Mixin类;
    3)再者,它不依赖于子类的实现;
    4)最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能(比如飞机照样可以载客,就是不能飞了^_^)。

      至此。转载请注明出处。

    本站相关链接:>>Django部署 ]

  • 相关阅读:
    centos 7.0 yum 分开安装 LAMP 环境 +zabbix3.4环境
    互联网产品接入支付功能如何测试?
    python实现:将文本文件分割成多个小文本文件(php也可实现)
    『危机领导力』告诉我们如何带好团队
    Fiddler显示服务器IP的方法
    Google PageSpeed Tools 性能测试分析
    写给浮躁的测试工程师一封信
    数据库事务和锁
    测试工作中ADB命令实战
    git使用基础
  • 原文地址:https://www.cnblogs.com/wcwnina/p/9248162.html
Copyright © 2011-2022 走看看