【发布时间】:2026-01-06 17:00:01
【问题描述】:
我设置了一个custom permissions class,以便在一个应用程序中重复使用多个视图,其中一些用户代表其他用户拥有类似所有权的权利:
class IsOwnerLike(permissions.BasePermission):
def has_permission(self, request, view):
if (
user_is_owner(request.user, request.data["owned_by"])
| user_is_owner_like(request.user, request.data["owned_by"])
):
return True
return False
这对一个 ModelViewSet 可以正常工作。
但是,由于遗留原因,进入不同视图的不同请求可能没有“owned_by”数据元素——它可能被称为“owned”、“owner”、“created_by”等——因此我无法按书面规定重复使用此自定义权限。
在视图集中抽象事物以规范传递给我的自定义权限类的数据的正确方法是什么?可以这样做,还是我应该考虑以不同的方式处理这些权限?
【问题讨论】:
-
如果你使用 created_by 那么它不会工作,你必须创建不同的权限类
标签: python django django-rest-framework permissions django-rest-viewsets