前端于对数据操作的请求基本上就分为四类:增删改查,即增加、删除、修改、查询。

  而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求。

  不带ID参数请求包括:增加、分布多条查询

  带ID参数请求包括:删除、修改、单条查询

  DRF针对这五类需求,分别提供了五个扩展类来支持,叫Mixin扩展类。

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

  找到并打开Applications/Examples/views下的Schools.py文件,在操作GenericAPIView时,首先要导入两个包:

  1. from rest_framework.generics import GenericAPIView
  2. from rest_framework import mixins

1 不带ID参数请求

  1. class SchoolsGenericListView(GenericAPIView, mixins.ListModelMixin, mixins.CreateModelMixin):
  2. queryset = Schools.objects.all()
  3. serializer_class = SchoolsSerializer
  4.  
  5. def get(self, request):
  6. return self.list(request)
  7.  
  8. def post(self, request):
  9. return self.create(request)

2 带ID参数请求

  1. class SchoolsGenericDetailView(GenericAPIView, mixins.RetrieveModelMixin, mixins.UpdateModelMixin,
  2. mixins.DestroyModelMixin):
  3. queryset = Schools.objects.all()
  4. serializer_class = SchoolsSerializer
  5.  
  6. def get(self, request, pk):
  7. return self.retrieve(request, pk)
  8.  
  9. def put(self, request, pk):
  10. return self.update(request, pk)
  11.  
  12. def delete(self, request, pk):
  13. return self.destroy(request, pk)

3 配置两个路由

  配置路由之前,需要先导入Schools.py包中的视图路径。

  1. path('SchoolsGenericList/', SchoolsGenericListView.as_view()),
  2. path('SchoolsGenericDetail/<int:pk>', SchoolsGenericDetailView.as_view()),

  

  通过两个基类视图APIView,GenericAPIView的学习,掌握url是否携带ID参数可把视图分为两类,分别对应不同的url,也就是说,完成五个前端的基本请求,只需要配置两个路由。

0014 基于DRF框架开发(02 基类视图 GenericAPIView)的更多相关文章

  1. 0013 基于DRF框架开发(01 基类视图 APIView)

    之前学习了模型序列化和普通序列化,我们用最简单的视图和url实现了对序列化的操作. 而实际上,象之前那种由DRF自动生成所有的视图和url的情况,在应用是使用很少.而需要用户根据实际业务需求,自定义视 ...

  2. 0009 基于DRF框架开发(02 创建模型)

    上一节介绍了DRF开发的基本流程,共五个步骤: 1 创建模型 2 创建序列化器 3 编写视图 4 配置URL 5 运行测试 本节主要讲解创建模型. 构建学校,教师,学生三个模型,这三个模型之间的关系是 ...

  3. 0010 基于DRF框架开发(03 模型序列化器)

    序列化器:是指从数据库提取数据,转化前端所需要的数据格式并返回到前端. 反序列化器:是指把前端传回的数据,转换成数据库需要的格式,存入数据库. DRF提供了两种序列化器: 模型序列化器:是指和模型关联 ...

  4. 0008 基于DRF框架开发(01 DRF开发的基本流程)

    1 创建模型 由于之前在<004 工程配置>中,已在Applications/Organizations/models中创建了一个UserInfo模型.此处引用这个模型. from dja ...

  5. 0012 基于DRF框架开发(04 序列化器的字段与选项)

    1 常用字段类型 字段 构造方式 BooleanField BooleanField() NullBooleanField NullBooleanField() CharField CharField ...

  6. 0011 基于DRF框架开发(04 普通序列化器)

    普通序列化器和模型无关,只是对针对提交字段的定义. 本文定义三个序列化器: 教师序列化器,学生序列化器,教师学生序列化器.这三个序列化器都使用普通序列化器. 1 教师序列化器 在Application ...

  7. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  8. MapReduce教程(一)基于MapReduce框架开发<转>

    1 MapReduce编程 1.1 MapReduce简介 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,用于解决海量数据的计算问题. MapReduce分成了两个部分: ...

  9. drf框架serializers中ModelSerializer类简化序列化和反序列化操作

    0905自我总结 drf框架serializers中ModelSerializer类 基于seriallizer类进行简化 https://www.cnblogs.com/pythonywy/p/11 ...

随机推荐

  1. error C2338: No Q_OBJECT in the class with the signal (NodeCreator.cpp)

    在Qt中,当派生类需要用到信号与槽机制时,有两个要求. 1.该类派生自QObject类. 2.类中有Q_OBJECT宏. 本次报错的原因就是因为没有在类中添加Q_OBJECT宏. 而我的出错原因更傻逼 ...

  2. Java程序员必备英文单词

    列表中共有769个单词,这些单词是从JDK.Spring.SpringBoot.Mybatis的源码中解析得到,按照在源码中出现的频次依次排列,页面中的单词是出现频次大于1000的.单词的音标.翻译结 ...

  3. 浏览器中的 .Net Core —— Blazor WebAssembly 初体验

    前言 在两年多以前就听闻 Blazor 框架,是 .Net 之父的业余实验性项目,其目的是探索 .Net 与 WebAssembly 的兼容性和应用前景.现在这个项目已经正式成为 Asp.Net Co ...

  4. Maven项目pom文件的节点释意

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. 设置允许外网访问MySQL

    1:设置mysql的配置文件     /etc/mysql/my.cnf      找到 bind-address  =127.0.0.1  将其注释掉://作用是使得不再只允许本地访问:  重启my ...

  6. HDU 1017 直接暴力。

    C - 3 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  7. 杭电-------2052Picture(C语言)

    #include<stdio.h> int main() { int width, height; int i, j; while (~scanf("%d %d", & ...

  8. PYTHON 学习笔记4 模块的使用、基本IO 写入读取、JSON序列化

    前言 若在之前写代码的方式中,从Python 解释器进入.退出后再次进入,其定义的变量.函数等都会丢失.为了解决这个为,我们需要将需要的函数.以及定义的变量等都写入一个文件当中.这个文件就叫做脚本 随 ...

  9. React之props、state和render函数的关系

    1.当组件中的state或者props发生改变的的时候,render函数就会被重新执行 2.当父组件的render函数被运行时,它的子组件的render都将被重新运行一次 3.子组件作为父组件里的一个 ...

  10. vertical-align和line-height的理解及实例

    line-height 字符实际大小和font-size的关系: 下图中不同字体font-size都是100px 测量了一下每个 span 的高度:Helvetica 115px,Gruppo 97p ...