用户收藏接口权限设置
在开发Web应用程序时,对于某些接口或视图,我们可能需要限制只有特定的用户才能访问或修改。比如,收藏电影的接口,用户张三只能访问添加和删除电影的接口,而管理员可以实现其他接口。
本节我们将介绍如何在Django REST Framework中设置用户收藏接口的权限。
权限设置
首先,我们将只允许授权用户访问和修改用户的收藏接口。我们可以通过设置 permission_classes 来实现这一目的,默认情况下,我们将其设置为 IsAuthenticated,即仅允许已认证的用户访问。
from rest_framework import permissions
class MyView(APIView):
permission_classes = [permissions.IsAuthenticated]
...
然而,在进行修改操作时,我们还需要验证当前请求的方法是否为 PUT 或 PATCH,并且需要管理员权限。为了实现这一点,我们可以重写 get_permissions 方法,并根据请求方法返回不同的权限。
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from movie.models import Movie
from movie.serializers import MovieSerializer
from account.models import Profile
# Create your views here.
class CollectViewSet(viewsets.ModelViewSet):
queryset = Movie.objects.all()
serializer_class = MovieSerializer
permission_classes = [IsAuthenticated]
def get_permissions(self):
if self.request.method in ['PUT', 'PATCH']:
return [IsAdminUser()]
return [IsAuthenticated()]
测试权限设置
在使用 PUT 或 PATCH 方法进行修改操作时,只有管理员用户才能成功返回 True。否则,默认使用已登录用户的权限。以下是测试的步骤和结果:
- 使用管理员用户进行修改操作:修改成功。
- 使用非管理员用户进行修改操作:返回未授权的错误信息。
通过如上配置,我们可以实现对用户收藏接口的权限设置,确保只有管理员才能修改相关信息。在其他接口中,我们也可以根据类似的方式进行设置。
非管理员用户进行修改操作如下图所示。

管理员用户进行修改操作,如下图所示。

总结
本文介绍了如何在Django REST Framework中设置用户收藏接口的权限。我们通过设置 permission_classes 并重写 get_permissions 方法,实现了只有管理员才能访问和修改接口的功能。同样的方法也可以应用于其他接口,以实现更灵活的权限控制。
【大熊课堂精品课程】
Python零基础入门动画课: https://www.bilibili.com/cheese/play/ss7988
Django+Vue:全栈开发: https://www.bilibili.com/cheese/play/ss8134
PyQT6开发桌面软件: https://www.bilibili.com/cheese/play/ss12314
Python办公自动化: https://www.bilibili.com/cheese/play/ss14990
Cursor AI编程+MCP:零基础实战项目课: https://www.bilibili.com/cheese/play/ss105194189
Pandas数据分析实战: https://www.bilibili.com/cheese/play/ss734522035
AI大模型+Python小白应用实战: https://www.bilibili.com/cheese/play/ss3844