【发布时间】:2021-08-03 22:37:45
【问题描述】:
目前根据用户类型在 DRF 中查看权限的最佳方法是什么?
在我的结构中有几个user_types,例如TEAM_LEADER 无法创建team 对象,但可以看到teams 的列表。这意味着对于同一个类视图,例如我想对 POST 和 GET 使用不同的权限。
我希望尽可能做到这一点,并且我正在尝试遵循瘦视图胖模型设计原则(也想知道这是否是 2021 年遵循的好做法)。
models.py 用于用户模型
class User(AbstractBaseUser):
...fields here
objects = UserManager()
USERNAME_FIELD = "email"
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
if perm.Meta.verbose_name=="worksite" and perm.request.method =="POST":
if self.user_type <= self.DEPARTMENT_MANAGER:
return True
else:
return False
return True
views.py
class DashboardPermissions(BasePermission):
message="You dont have permission for this action"
def has_permission(self, request, view):
return request.user.has_perm(view.Meta.verbose_name)
class ViewName(CreateAPIView):
permission_classes = (IsAuthenticated,DashboardPermissions)
authentication_classes = ()
serializer_class = WorksiteSerializer
queryset = Worksite.objects.all()
class Meta:
verbose_name="view_name"
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
我的解决方案会产生任何性能问题吗?
【问题讨论】:
标签: python-3.x django rest django-rest-framework permissions