TLDR:如何允许特定群组使用Django Rest Framework访问视图?
我正在用DjangoRest框架构建一个Web服务,只有一个(适当的)视图子集是为客户准备的。
到目前为止,我已经:
1.将默认权限设置为rest_framework.permissions.IsAdminUser
1.创建了一个名为is_customer
的权限(使用Django管理网站)
1.创建了一个名为customers
的组,并将所有相关用户添加到此组(使用管理员网站)
1.已将is_customer
权限添加到customers
(再次使用管理员网站)
我的所有视图都是基于函数的。为了给customers
组提供适当的权限,我尝试了
from rest_framework.decorators import api_view
from django.contrib.auth.decorators import permission_required
@api_view(["POST"])
@permission_required(["is_customer"])
def my_func(request):
# calculations
return Response(...)
EDIT:还尝试了以下方法
from rest_framework import permissions
from rest_framework.decorators import api_view
class IsCustomer(permissions.BasePermission):
def has_permission(self, request, view):
if request.user.is_customer:
return True
return False
def has_object_permission(self, request, view, obj):
if request.user.is_customer:
return True
return False
@api_view(["POST"])
@permission_required([IsCustomer])
def my_func(request):
# calculations
return Response(...)
以及
from rest_framework.decorators permission_classes, api_view
@api_view(["POST"])
@permission_classes(["is_customer"])
def my_func(request):
# calculations
return Response(...)
而且这两种方法似乎都不起作用。什么是正确的方法呢?提前感谢你的建议!
1条答案
按热度按时间fhity93d1#
如果直接引用类,最后一个块应该可以工作:
您可以在此处查看包含类似示例的文档:https://www.django-rest-framework.org/api-guide/permissions/