Django DRF 视图子类

本文详细介绍了Django Rest Framework (DRF) 中的9个核心视图子类,包括ListAPIView、CreateAPIView、RetrieveAPIView、DestroyAPIView、UpdateAPIView、ListCreateAPIView、RetrieveDestroyAPIView、RetrieveUpdateAPIView以及RetrieveUpdateDestroyAPIView。这些视图子类分别用于处理GET、POST、PUT、PATCH和DELETE请求,覆盖了CRUD操作。通过实例代码展示了如何在DRF中使用这些视图来操作数据库模型,如创建、读取、更新和删除数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 引子

DRF 提供了 9 个视图子类,分别为 ListAPIView、CreateAPIView、ListCreateAPIView、UpdateAPIView、DestroyAPIView、RetrieveAPIView、RetrieveDestroyAPIView、RetrieveUpdateDestroyAPIView、RetrieveUpdateAPIView

导入语句

  • from rest_framework.generics import CreateAPIView, ListAPIView, ListCreateAPIView
  • from rest_framework.generics import UpdateAPIView, DestroyAPIView, RetrieveAPIView
  • from rest_framework.generics import RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView, RetrieveUpdateAPIView

2. ListAPIView

继承自:GenericAPIView、ListModelMixin。该视图字类提供 get 方法

使用 ListAPIView 查看所有(部分代码)

from app01 import models
from app01.serializer import BookSerializer
from rest_framework.generics import ListAPIView

class BookView(ListAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
        

查看源码

class ListAPIView(mixins.ListModelMixin, GenericAPIView):
                  
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)
        

3. CreateAPIView

继承自: GenericAPIView、CreateModelMixin。该视图字类提供 post 方法

使用 CreateAPIView 创建(部分代码)

from app01 import models
from app01.serializer import BookSerializer
from rest_framework.generics import CreateAPIView

class BookView(CreateAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer

查看源码

class CreateAPIView(mixins.CreateModelMixin, GenericAPIView):

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)
        

4. RetrieveAPIView

继承自: GenericAPIView、RetrieveModelMixin。该视图字类提供 get 方法

使用 RetrieveAPIView 查看单个(部分代码)

from app01 import models
from app01.serializer import BookSerializer
from rest_framework.generics import RetrieveAPIView

class BookView1(RetrieveAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
        

查看源码

class RetrieveAPIView(mixins.RetrieveModelMixin, GenericAPIView):

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

5. DestoryAPIView

继承自:GenericAPIView、DestoryModelMixin。该视图字类提供 delete 方法

使用 DestoryAPIView 删除单个(部分代码)

class BookView1(DestroyAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
       

查看源码

class DestroyAPIView(mixins.DestroyModelMixin, GenericAPIView):

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)
        

6. UpdateAPIView

继承自:GenericAPIView、UpdateModelMixin。该视图字类提供 putpatch 方法

使用 UpdateAPIView 修改单个(部分代码)

class BookView1(UpdateAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
    

查看源码

class UpdateAPIView(mixins.UpdateModelMixin, GenericAPIView):

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)
        

7. ListCreateAPIView

继承自: GenericAPIView、ListModelMixin、CreateModelMixin,该视图子类一个实现创建和查询所有。提供 get、create 方法

8. RetrieveDestroyAPIView

继承自: GenericAPIView、RetrieveModelMixin、DestroyModelMixin。提供 get、delete方法

9. RetrieveUpdateAPIView

继承自: GenericAPIView、RetrieveModelMixin、UpdateModelMixin。该视图字类提供 get、put、patch方法

10. RetrieveUpdateDestoryAPIView

继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin。该视图字类提供 get、put、patch、delete方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值