前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django-DRF | GenericAPIView 视图类

Django-DRF | GenericAPIView 视图类

作者头像
小团子
发布2020-01-16 11:11:24
1.1K0
发布2020-01-16 11:11:24
举报
文章被收录于专栏:数据云团

Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

代码语言:javascript
复制
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin

一、GenericAPIView 基类

GenericAPIView 继承自 APIView,主要增加了操作序列化和数据库查询的方法,作用是为下面 Mixin 扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个 Mixin 扩展类。

  • 指明视图使用的序列化器

① 通过属性:

serializer_class

② 通过方法:

get_serializer_class(self)

get_serializer(self, args, *kwargs)

  • 数据库查询的属性与方法

指明使用的数据查询集

① 通过属性

queryset

② 通过方法

get_queryset(self)

get_object(self)

代码语言:javascript
复制
class BookListView(GenericAPIView):
    """使用GenericAPIView实现“获取所有图书信息”接口"""
    serializer_class = BookSerializer # 指定序列化器
    queryset = Book.objects.all() # 指定查询集
    
    def get(self, reqeust):
        """获取所有图书信息 GET /books/ :param reqeust: Request类型的对象 :return: JSON"""
        book = self.get_queryset() # 获取查询集
        serializer = self.get_serializer(book, many=True)# 创建序列化器对象
        return Response(serializer.data) # 响应序列化后的数据

二、GenericAPIView 扩展类

GenericAPIView 的五个拓展类提供了五个方法分别进行增删改查的不同操作。

搭配 GenericAPIView 使用

  • ListModelMixin 提供 list 方法快速实现列表视图
  • CreateModelMixin 提供 create 方法快速实现创建资源的视图
  • RetrieveModelMixin 提供 retrieve 方法,可以快速实现返回一个存在的数据对象(传入pk)
  • UpdateModelMixin 提供 update 方法,可以快速实现更新一个存在的数据对象。提供 partial_update 方法,实现局部更新
  • DestroyModelMixin 提供 destroy 方法,快速实现删除一个存在的数据对象
代码语言:javascript
复制
class BookDetailView(mixins.RetrieveModelMixin, GenericAPIView):
    """使用GenericAPIView实现“获取单一图书信息”接口"""
    serializer_class = BookSerializer # 指定序列化器
    queryset = Book.objects.all() # 指定查询集
    
    def get(self, request, pk):
    """获取单一图书信息 GET /books/<pk>/ :param request: Request类型的对象 :return: JSON"""
        return self.retrieve(request)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GenericAPIView 继承自 APIView,主要增加了操作序列化和数据库查询的方法,作用是为下面 Mixin 扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个 Mixin 扩展类。
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档