Django REST框架中的依赖权限

lokaqttq  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(94)

我有个疑问-
假设我有一个笔记本(物理,化学,数学,...),我想通过实现一些权限在这些笔记本中添加笔记-
1.如果我有权限查看笔记本,我必须能够看到所有/一些笔记本在下拉
1.我应该能够添加/删除/查看笔记本内的任何笔记,如果我被允许访问该笔记本,并允许添加/删除/查看笔记本内
什么是最好的方法来最好地实现这种情况
我走了一圈堆栈溢出,但没有找到任何答案有关

mtb9vblg

mtb9vblg1#

您可以根据正在执行的操作覆盖视图中的get_permissions类,也可以添加自己的权限,这里是一个使用ModeViewSet的示例。

def get_permissions(self):
    if self.action in ['create', 'list', 'retrieve']:
        # Add or View records if you are logged in
        return (permissions.IsAuthenticated(),)
    else:
        # Delete or update records if you are logged in and added the record
        return (permissions.IsAuthenticated(), IsOwner(),)

IsOwner来自www.example.com中的自定义权限类permissions.py,如下所示:

from rest_framework import permissions

class IsOwner(permissions.BasePermission):

    def has_object_permission(self, request, view, obj):
        return obj.user == request.user

这个示例自定义类检查登录的用户是否是创建记录的用户,假设在notebook模型中有一个用户pk。
同样在用户模型中,您可以为允许查看记录的用户设置is_staff=True和user permissions.IsAdminUser,或者基于某些用户类型创建自定义权限类。

相关问题