zoukankan      html  css  js  c++  java
  • Django drf 免登陆设置login_exempt

    一、为类视图添加装饰器login_exempt

    在进入dispatch方法之前添加装饰器:即在view方法之后, 在调用dispatch方法之前添加装饰器.

    1、因为login_exempt是为函数准备的装饰器,所以类视图无法直接使用,需要使用method_decorator将其转换为适合类视图使用的装饰器。name='dispatch'代表:为视图中的所有请求方法添加装饰器

    @method_decorator(login_exempt, name='dispatch')

     2、将装饰器放在dispatch方法之上,仍然表示为视图中的所有请求方法添加装饰器

    @method_decorator(login_exempt)
        def dispatch(self, request, *args, **kwargs):
            return super(TicketAPIModelViewSet, self).dispatch(request, *args, **kwargs)

    二、重写as_view方法:

    as_view()的执行结果加装饰器, 由于as_view()方法返回的是一个view函数,在调用view函数之前进行装饰, 就相当于给每一个视图添加了装饰器, 因为它是一个视图的入口, 所以每次进入view函数之前都会调用一次!
    @classmethod
        def as_view(cls, actions=None, **initkwargs):
            # 登录豁免
            view = super(TicketAPIModelViewSet, cls).as_view(actions=actions, **initkwargs)
            return login_exempt(view)

  • 相关阅读:
    python读取csv数据(添加列名,指定分隔方式)
    loc_survived
    数据预处理
    hadoop 指令
    pd.concat
    DataFrame
    SQL左连接
    mysql mysql之把查询的结果保存到新表(小知识点)
    啦啦啦啦 mysql 授权
    ArrayList和LinkedList的区别以及优缺点
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/11975235.html
Copyright © 2011-2022 走看看