当前位置:网站首页>第十四单元 视图集及路由
第十四单元 视图集及路由
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根页面的路由,不只是视图集所包含的视图部分
本单元引用部分来自教案
边栏推荐
- 专访|带着问题去学习,Apache DolphinScheduler 王福政
- 多个驻外使领馆发提醒 事关赴华出行、人身财产安全
- Minio文件上传
- Data Organization---Chapter 6 Diagram---Graph Traversal---Multiple Choice Questions
- Flask项目的完整创建 七牛云与容联云
- 【Tensorflow】AttributeError: module ‘keras.backend‘ has no attribute ‘tf‘
- WiFi Association&Omnipeek抓包分析
- 海明校验码纠错设计原理
- 动态刷新日志级别
- redis分布式锁和看门狗的实现
猜你喜欢
随机推荐
网络安全第一次作业
世界上最大的开源基金会 Apache 是如何运作的?
xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接
Gstreamer Plugin注册流程详解
Sentinel源码(四)(滑动窗口流量统计)
栈 && 队列
二分查找 && 树
CVE-2020-27986(Sonarqube敏感信息泄漏) 漏洞修复
保姆级教程:写出自己的移动应用和小程序(篇三)
云片网案例
Configure zabbix auto-discovery and auto-registration.
MySQL数据库语法格式
乐心湖‘s Blog——MySQL入门到精通 —— 囊括 MySQL 入门 以及 SQL 语句优化 —— 索引原理 —— 性能分析 —— 存储引擎特点以及选择 —— 面试题
C language improvement (3)
【Tensorflow】AttributeError: module ‘keras.backend‘ has no attribute ‘tf‘
web测试和app测试的区别?
智能指针-使用、避坑和实现
你接受不了60%的暴跌,就没有资格获得6000%的涨幅 2021-05-27
uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标
els 长条方块变形条件、边界碰撞判定