DRF学习笔记(3)——CBV

本文深入探讨Django REST framework中的视图概念,包括基于函数的视图(FBV)和基于类的视图(CBV),并详细讲解了CreateModelMixin、GenericAPIView、CreateAPIView及RetrieveAPIView等通用视图组件的使用方法。

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


Django的视图分为基于类的视图(CBV)和基于函数的视图(FBV),在DRF里面这两种视图都可以使用。

基于函数的视图FBV

@api_view(http_method_names=['GET'])
api_view是一个装饰器,用 http_method_names 来设置视图允许响应的 HTTP 方法列表

@api_view(['GET', 'POST'])
def hello_world(request):
    if request.method == 'POST':
        return Response({"message": "Got some data!", "data": request.data})
    return Response({"message": "Hello, world!"})

基于类的视图CBV

REST framework 提供了一个 APIView 类,它继承于 Django 的 View 类,同时提供的通用视图快速构建紧密映射到数据库模型的 API 视图。如果通用视图不符合需求,可以使用常规的 APIView 类,或者利用 mixin 特性和基类组合出可重用的视图。
具体方法参考链接

CreateModelMixin, GenericAPIView
# 创建一本图书
class BookCreateView(CreateModelMixin, GenericAPIView):
    serializer_class = BookSerializer
    def post(self, request):
        return self.create(request)

mixin 类用于提供基本视图行为的操作,mixins⾥⾯对应了ListModelMixin,CreateModelMixin,RetrieveModelMixin, UpdateModelMixin ,DestroyModelMixin。
CreateModelMixin提供 .create(request, *args, **kwargs) 方法,实现创建和保存新模型实例。
GenericAPIView:继承⾃APIView,增加了对列表视图或者详情视图可能⽤到的通
⽤⽀持⽅法。通常使⽤时,可搭配⼀个或者多个Mixin扩展类。
serializer_class - 用于验证和反序列化输入以及序列化输出的序列化类。
queryset 查询结果集

CreateAPIView

用于创建实例。提供一个 post 请求的处理方法。

# 创建一本书
class BookCreateView(CreateAPIView):
    serializer_class = BookSerializer
RetrieveAPIView

仅用于查询单个模型实例。提供一个 get 请求的处理方法。

# 查询一本书
class BookRetriveView(RetrieveAPIView):
    queryset = Bookinfo.objects.all()
    serializer_class = BookSerializer

通用视图继承关系图

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值