【问题标题】:django rest framework know if view is class or functiondjango rest框架知道视图是类还是函数
【发布时间】:2020-12-26 21:32:52
【问题描述】:

我正在实施我的自定义权限,我必须检查视图是function 还是class

我做了以下事情

def has_permission(self, request, view):

        print("request ===", view, inspect.isfunction(view), inspect.isclass(view))

这里inspect.isfunction(view), inspect.isclass(view) 都给了我错误。

如何判断一个视图是functin还是class??

【问题讨论】:

  • 这是一个奇怪的许可条件????????只是出于好奇,这样的许可条件的目的是什么?
  • @JPG .. 想让它变得通用并且像魅力一样工作.. view.func.cls 这给了我想要的东西.. 没问题

标签: django django-rest-framework


【解决方案1】:

has_permission 的视图参数将始终是一个函数。

我相信你称之为函数,或者类方法(即与对象关联的函数)。

class YourClassName(APIView):
    permission_classes = [permissions.IsAdminUser]

    def get(self, request):
        # the method get, not the class, is passed to your permission check.

编辑

正如 ValidName 在 cmets 中所说,Django 开始仅使用基于函数的视图处理请求。从那时起,他们引入了基于类的视图,这些视图基本上被翻译成函数,因此在幕后被认为是这样的。

【讨论】:

  • 值得一提的是,起初 django 只有基于函数的视图,所以当他们引入基于类的视图时,他们通过代码使它们与基于函数的视图兼容,从而将类基视图转换为函数。因此,在某些地方,由于这种转换,基于类的视图可以表示为函数。
猜你喜欢
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2014-05-03
  • 1970-01-01
  • 2018-11-19
  • 2016-10-12
相关资源
最近更新 更多