当前位置:网站首页>第十四单元 视图集及路由
第十四单元 视图集及路由
2022-08-02 14:01:00 【czy1206527605】
一.ViewSet
1.视图集是什么
视图集简单来说就是一群视图逻辑操作的功能合集,并可采用路由映射的方式进行功能选择,编写的内置逻辑方法不再是使用请求命名,而是使用功能来进行命名
直白来说,为了防止请求冲突,视图集会将增删改查操作集合到一个视图里
2.action是什么
视图集类不再实现get、post等方法,而是实现动作action如list、create等,视图集只在使用as_view方法的时候,才会将action动作与具体请求方式对应上
就是说视图集类不再用get put post delete方法命名函数,而是用action这个动作来实现
action动作包括
利用视图集代码实现增删查改
我们可以看到,如果不是在ViewSet视图集就在一个类里来同时编写查询全部与查询单个数据两个方法的话,都是get请求会发生冲突
而使用action动作来命名就不会冲突。
路由映射也要发生改变
as_view(‘请求’:‘映射方法’)
二.混入类视图集ModelViewSet
1.什么是modelviewset
在ModelViewSet从类继承 GenericAPIView,并包括用于各种动作实现方式中,通过在各种混入类的行为混合,包含了***.list***、.retrieve、.create、.update、.partial_update、和***.destroy等方法,继承ListModelMixin***、RetrieveModelMixin、CreateModelMixin、UpdateModelMixin、DestroyModelMixin
2.代码的编写
导包
from rest_framework.viewsets import ModelViewSet
代码编写
view视图层
# 使用ModelViewSet实现增删查改操作
class PeopleViewSet(ModelViewSet):
queryset = People.objects.all() # 指定查询结果集
serializer_class = PeopleSerializer2 # 指定序列化器
url
三.DefaultRouter路由生成
1.需要的导包
在编写完ModelViewSet后,我们就要开始简化url模块的代码
from rest_framework import routers
2.路由的编写
3.SimplaeRouter路由生成
1.SimplaeRouter为DefaultRouter的子类。
2.使用方法
router = routers.SimplaeRouter()
router.register('people2',views.PeopleViewSet,'people2')
urlpatterns += router.urls
3.两种路由生成方式区别及根路由是什么
- SimpleRouter`:最基本的路由映射方式,只会将视图集具备的混入类功能进行路由的生成
- DefaultRouter:对比与SimpleRouter更加高级,包含有drf根页面的路由,不只是视图集所包含的视图部分
本单元引用部分来自教案
边栏推荐
- 【Tensorflow】AttributeError: module 'keras.backend' has no attribute 'tf'
- Mysql's case the when you how to use
- logback源码阅读(一)获取ILoggerFactory、Logger
- binary search && tree
- logback源码阅读(二)日志打印,自定义appender,encoder,pattern,converter
- Sentinel源码(六)ParamFlowSlot热点参数限流
- How to solve 1045 cannot log in to mysql server
- 关于市场后市的发展预测? 2021-05-23
- 二分查找 && 树
- 网络安全第三次作业
猜你喜欢
如何解决mysql服务无法启动1069
乐心湖‘s Blog——MySQL入门到精通 —— 囊括 MySQL 入门 以及 SQL 语句优化 —— 索引原理 —— 性能分析 —— 存储引擎特点以及选择 —— 面试题
Linux:CentOS 7 安装MySQL5.7
Image retrieval method based on deep learning!
uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标
第二讲 软件生命周期
Configure zabbix auto-discovery and auto-registration.
海明校验码纠错设计原理
目标检测场景SSD-Mobilenetv1-FPN
未来的金融服务永远不会停歇,牛市仍将继续 2021-05-28
随机推荐
一维卷积神经网络_卷积神经网络的基础知识「建议收藏」
drf序列化器-Serializer
HALCON: 内存管理(Memory Management)
web测试和app测试的区别?
The future of financial services will never stop, and the bull market will continue 2021-05-28
瑞吉外卖笔记——第05讲Redis入门
定了!就在7月30日!
苏州大学:从 PostgreSQL 到 TDengine
C# 编译错误:Compiler Error CS1044
Geoffery Hinton:深度学习的下一个大事件
【Tensorflow】AttributeError: ‘_TfDeviceCaptureOp‘ object has no attribute ‘_set_device_from_string‘
Sentinel源码(二)入口方法分析
Sentinel源码(四)(滑动窗口流量统计)
CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
Word | 关于删除分节符(下一页)前面的版式就乱了解决方案
Why does a four-byte float represent a wider range than an eight-byte long
打破文件锁限制,以存储力量助力企业增长新动力
【学习笔记】数位dp
redis分布式锁和看门狗的实现
栈 && 队列