bibi45

2020-06-25 | Backend 中文

DRF GenericAPIView:减少 CRUD 重复代码

bibi45

用通用视图和 Mixin 表达常见资源接口,同时保留查询与权限控制点。

This article is currently available in Chinese. The language switch changes the site interface; the original text is shown below.

ListCreateAPIView、RetrieveUpdateDestroyAPIView 等通用视图由 GenericAPIView 和 Mixin 组合而成,适合典型资源接口。

class ProjectList(generics.ListCreateAPIView):
    serializer_class = ProjectSerializer

    def get_queryset(self):
        return Project.objects.filter(owner=self.request.user)

动态查询必须放在 get_queryset(),不要直接复用已求值的 self.queryset。这样既不会意外缓存结果,也能把数据范围限制在当前用户可见对象内。

© 2026 bibi45. All rights reserved.

Built as a static, Git-owned site.