django drf 权限控制
时间: 2023-07-28 08:07:05 浏览: 214
Django REST framework (DRF) 提供了一些内置的权限类,可以用于控制 API 的访问权限。以下是一些常用的权限类:
1. `AllowAny`:允许所有用户访问 API。
2. `IsAuthenticated`:只有认证用户才能访问 API。
3. `IsAdminUser`:只有管理员用户才能访问 API。
4. `IsAuthenticatedOrReadOnly`:认证用户可以执行任何操作,未认证用户只能执行只读操作。
5. `DjangoModelPermissions`:基于 Django 模型的权限控制,只有拥有模型相关权限的用户才能执行相关操作。
6. `DjangoObjectPermissions`:基于 Django 模型对象的权限控制,只有拥有模型对象相关权限的用户才能执行相关操作。
下面是一个使用权限类的示例:
```python
from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView
from rest_framework.response import Response
class MyAPIView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
# 只有认证用户才能访问此 API
return Response("Hello, World!")
```
在上面的示例中,我们定义了一个 `MyAPIView` 类,并将其 `permission_classes` 属性设置为 `[IsAuthenticated]`。这意味着只有认证用户才能访问此 API。如果未认证用户尝试访问此 API,则会返回 401 Unauthorized 错误响应。
此外,您还可以在视图函数上使用 `@permission_classes` 装饰器来指定权限类。例如:
```python
from rest_framework.decorators import permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
@permission_classes([IsAuthenticated])
@api_view(['GET'])
def my_view(request):
# 只有认证用户才能访问此 API
return Response("Hello, World!")
```
上面的示例中,我们使用 `@permission_classes` 装饰器将 `IsAuthenticated` 权限类应用于 `my_view` 函数。这样,只有认证用户才能访问此 API。
阅读全文