我想在 Django Rest Framework 中基于视图+方法+用户权限创建权限。
有没有一种方法可以实现这一目标,而无需手动编写每个权限并检查用户所在组的权限?
另外,我面临的另一个问题是权限对象与某个模型相关联。由于我有影响不同模型的视图,或者我想对 PUT 方法授予不同的权限,具体取决于我访问的视图(因为它影响不同的字段),所以我希望我的权限与某个视图相关联,而不是与某个视图相关联。某种型号。
有谁知道如何做到这一点?
我正在寻找以下类型的解决方案:
-
使用以下参数创建 Permissions 对象:View_affected
, list_of_allowed_methods(GET,POST,etc.)
-
创建一个具有关联权限的组对象
-
将用户添加到组中
-
让我的默认权限类别处理一切。
从我现在所掌握的情况来看,给我带来问题的步骤是步骤 1。因为我看不到将权限与视图绑定的方法,并且因为权限需要模型,而我不需要模型。
嗯,使用 DRF 可以轻松完成第一步。看http://www.django-rest-framework.org/api-guide/permissions#custom-permissions.
你必须做这样的事情:
from functools import partial
from rest_framework import permissions
class MyPermission(permissions.BasePermission):
def __init__(self, allowed_methods):
super().__init__()
self.allowed_methods = allowed_methods
def has_permission(self, request, view):
return request.method in self.allowed_methods
class ExampleView(APIView):
permission_classes = (partial(MyPermission, ['GET', 'HEAD']),)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)