当前位置: 首页 > 面试题库 >

Django REST框架-每个方法的单独权限

乜明朗
2023-03-14
问题内容

我正在使用Django REST Framework编写API,并且想知道在使用基于类的视图时是否可以为每个方法指定权限。

阅读文档,如果您正在编写基于函数的视图,那么仅使用@permission_classes装饰器对要使用权限保护的视图的函数,我认为这样做非常容易。不过,我不明白的方式使用与CBVS时做同样的APIView课,因为那时我指定用满级的权限permission_classes属性,但将被再应用到所有类方法(getpostput
)。

因此,是否可以用CBV编写API视图,并为视图类的每个方法指定不同的权限?


问题答案:

权限应用于整个View类,但是您可以在授权决策中考虑请求的各个方面(例如GET或POST之类的方法)。

参见内置IsAuthenticatedOrReadOnly示例:

SAFE_METHODS = ['GET', 'HEAD', 'OPTIONS']

class IsAuthenticatedOrReadOnly(BasePermission):
    """
    The request is authenticated as a user, or is a read-only request.
    """

    def has_permission(self, request, view):
        if (request.method in SAFE_METHODS or
            request.user and
            request.user.is_authenticated()):
            return True
        return False


 类似资料:
  • 当我要求一个图像http://127.0.0.1:8000/api/images/1/或者传入参数进行裁剪http://127.0.0.1:8000/api/images/1/?height=320 我得到的答复是: 而在http://127.0.0.1:8000/api/images/ 答复是: 为什么缩略图不容易返回主机名,我如何将基本网址追加到响应中? 以下是我的看法。派克

  • 本文向大家介绍android6.0权限动态申请框架permissiondispatcher的方法,包括了android6.0权限动态申请框架permissiondispatcher的方法的使用技巧和注意事项,需要的朋友参考一下 1,添加依赖 在project的build.gradle文件中添加 在module的build.gradle中添加 2,添加注解 注释说明 RuntimePermissio

  • 我想我会在这里问这个问题,因为我不太确定我会错在哪里。我正在尝试使用Django Rest框架类通过AJAX执行POST请求。但是,每当事件触发时,我都会收到以下错误: 这是堆栈跟踪中显示的内容: 上下文 我试图做到这一点,当用户单击“添加到列表”按钮时,它会向用户定义的列表发送一个cafeName(以及最终的其他详细信息)。 我想知道是否有人可以看看我的代码,并给我一些指导,我哪里出了问题? 代

  • 问题内容: 我正在使用ECMAScript6模块。通过以下选项从模块导出/导入多个方法的正确方法是什么? 单类静态方法: 多种导出方法: 1)导出:一类只是静态方法的感觉有点像“代码气味”,但是类似地,单独导出所有内容确实有点冗长。仅仅是开发人员的偏爱还是这里有性能影响? 2)导入:’* as’语法是我的首选方法,因为它允许您使用点表示法(同时引用模块和方法)来辅助代码的可读性。但是,当我可能只使

  • 我正在使用ECMAScript 6模块。从下面的选项中从模块导出/导入多个方法的正确方法是什么? 单一类别的静态方法: 多个导出方法: 1) 导出:一个仅仅是静态方法的类感觉有点像“代码味道”,但类似地,单独导出所有内容确实感觉有点冗长。这仅仅是开发人员的偏好,还是存在性能影响? 2) 导入:“*as”语法是我首选的方法,因为它允许您使用点表示法(同时引用模块和方法)帮助代码可读性。当我可能只使用

  • 本文向大家介绍ThinkPHP框架表单验证操作方法,包括了ThinkPHP框架表单验证操作方法的使用技巧和注意事项,需要的朋友参考一下 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。分为静态验证和动态验证。 一、静态验证 (1)在Home/Controller/路径下新建Index控制器。IndexController  Inde