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)

  • 相关阅读:
    Android中设置APP应用字体不缩放,文字不随系统字体大小变化
    day02 作业
    day01
    2018.11.2
    2018.11.1
    2018.10.25
    2018.10.24
    2018.10.23
    2018.10.20
    2018.10.19学习总结
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/11975235.html
Copyright © 2011-2022 走看看