【Django-01】 视图函数和视图类
视图函数
- 作用
- 详解
- 视图函数的特点
- 视图类
- 实际开发怎么用
- 一个无意义的demo
作用
用于返回给前端数据
详解
def list(request):"""1.普通的视图函数 request是HttpRequest 函数2.且必须用request.GET|request.POST 指定方法是什么方法3.返回值不能用 rest_framework包下的Response 必须是:param request::return:"""assert isinstance(request, HttpRequest)page = request.GET.get("page", default=1)page_size = request.GET.get("page_size", default=10)objs = Student.objects.all()# 分页器实现分页paginator = Paginator(objs, page_size) # 构建分页器current_page_objs = paginator.get_page(page).object_list # 当前页的数据# 反序列化为jsondata_list = StudentSerializer(current_page_objs, many=True).datares = {"status_code": 200,"message": "分业查询成功","data": {'items': data_list}}return JsonResponse(res)
读者不需要看其他部分,只需要知道视图函数接收的是HttpRequest对象。
其属性有:
path:路径,不包含域名
method: 表示请求的方法,为str类型,值为POST, GET
encoding:数据的编码格式,默认utf-8
GET: 字典,包含get所有参数
POST:字典,POST所有参数
FILES:字典,上传文件的信息
COOKIES:字典 所有cookie对象
session:字典 表示会话
META: 字典,HTTP 头信息,比如agent,ip等
user:当前登录用户
视图函数的特点
视图函数,函数名称何以结合path达到词语达意的意思,比较灵活。比如函数名称为: list_stident(request)
则url中path(‘list/student’, list_stident)
视图类
视图类是封装了接收前端 [‘get’, ‘post’, ‘put’, ‘patch’, ‘delete’, ‘head’, ‘options’, ‘trace’] 方法支持的类,想要任何函数直接继承APIView 即可,这样子固定的路径下,该类自动识别前端请求类型,会自动找到对应的函数,比如前段发送POST请求,则会自动到你实现的POST中。
实际开发怎么用
一般是视图函数和视图类结合使用。视图类只提供最基本的:【POST 创建 , PUT修改, DELETE 删除 , GET 创建四个函数】至于其他的api则用视图函数达到 见路径知含义的效果。
一个无意义的demo
class StudentApi(APIView):"""1.get/put/post/delte 定义了基础视图2.静态函数定义了 其他的功能"""def get(self, request):queryset = Student.objects.all()data_list = StudentSerializer(queryset, many=True).datares = {"status_code": 200,"message": "查询成功","data": {'items': data_list,'total': len(data_list)}}return Response(res)# 创建->仅仅传入data参数def post(self, request):with transaction.atomic():serializer = StudentSerializer(data=request.data)if serializer.is_valid(raise_exception=True):# save 中做了校验如果存在则更新 否则则是创建instance = serializer.save()res = {"status_code": 200,"message": "创建成功","data": {'id': instance.id}}return Response(res)# 更新要同时传入 instance 和datadef put(self, request):with transaction.atomic():res_body = {"code": 200,"msg": "更新成功","data": {}}try:obj = Student.objects.get(id=request.data['id'])serializer = StudentSerializer(instance=obj, data=request.data)if serializer.is_valid(raise_exception=True):instance = serializer.save()res_body["data"]["obj"] = model_to_dict(instance)except Exception as e:print(e)res_body["msg"] = "更新失败:%s" % ereturn Response(res_body)def delete(self, request):assert isinstance(request, Request)params = request.query_paramsres_body = {"code": 200,"msg": "删除","data": {}}try:obj = Student.objects.get(id=params["id"])obj.delete()res_body["data"]["obj"] = model_to_dict(obj)except Exception as e:res_body["msg"] = "删除失败:%s" % ereturn Response(res_body)def list(request):"""1.普通的视图函数 request是HttpRequest 函数2.且必须用request.GET|request.POST 指定方法是什么方法3.返回值不能用 rest_framework包下的Response 必须是:param request::return:"""assert isinstance(request, HttpRequest)page = request.GET.get("page", default=1)page_size = request.GET.get("page_size", default=10)objs = Student.objects.all()# 分页器实现分页paginator = Paginator(objs, page_size) # 构建分页器current_page_objs = paginator.get_page(page).object_list # 当前页的数据# 反序列化为jsondata_list = StudentSerializer(current_page_objs, many=True).datares = {"status_code": 200,"message": "分业查询成功","data": {'items': data_list}}return JsonResponse(res)路由定义为:
urlpatterns = [url(r'^student$', app_view.StudentApi.as_view()),//基本增删改查url('^student/list$', app_view.StudentApi.list) //见path知含义
]
相关文章:
【Django-01】 视图函数和视图类
视图函数 作用详解视图函数的特点视图类实际开发怎么用一个无意义的demo 作用 用于返回给前端数据详解 def list(request):"""1.普通的视图函数 request是HttpRequest 函数2.且必须用request.GET|request.POST 指定方法是什么方法3.返回值不能用 rest_framewor…...
编译安装报错:configure: error: cannot guess build type; you must specify one
1、编译安装报错 configure: error: cannot guess build type; you must specify one 该报错信息翻过过来的意思是:无法猜测编译 操作系统类型,请指定一个 2、解决方法 在原本的编译安装语句后面加上一句: “--buildarm-linux ” ,这句话…...
2311rust,到66版本更新
1.60.0稳定版 基于源码的代码覆盖率 rustc中已稳定支持基于LLVM的覆盖率检测.可用-Cinstrument-coverage重构代码,如: RUSTFLAGS"-C instrument-coverage" cargo build之后,运行生成的二进制文件,它在当前目录中生成一个default.profraw文件.环境变量可覆盖路径和…...
JOSEF约瑟 过电流继电器 JL15-300/11 触点形式一开一闭 板前接线
系列型号 JL15-1.5/11电流继电器JL15-2.5/11电流继电器 JL15-5/11电流继电器JL15-10/11电流继电器 JL15-15/11电流继电器JL15-20/11电流继电器 JL15-30/11电流继电器JL15-40/11电流继电器 JL15-60/11电流继电器JL15-80/11电流继电器 JL15-100/11电流继电器JL15-150/11电流继电…...
postman设置接口关联这样做,薪资直接涨3k
postman设置接口关联 在实际的接口测试中,后一个接口经常需要用到前一个接口返回的结果, 从而让后一个接口能正常执行,这个过程的实现称为关联。 在postman中实现关联操作的步骤如下: 1、利用postman获取上一个接口指定的返回值…...
Java常见的bug
Java是一种强类型、面向对象的编程语言,有一些常见的bug或错误类型,尽管具体的bug会因项目和代码的不同而有所差异。以下是一些Java开发中常见的bug类型: 空指针异常(NullPointerException): 尝试在一个空对象上调用方法或访问属性时会引发空指针异常。这通常发生在没有对…...
gitea仓库镜像同步至gitlab
1、参考文档:仓库镜像 | Gitea Documentation 2、错误一:账号密码错误问题 解决方法: 出现以上错误为第三步用户名(Oauth2应用名称)或者密码(Gitlab个人访问令牌)错误。 1)如下图1…...
服务器不备案的影响
服务器不备案的影响 不备案,不能解析域名。 但凡你的域名绑定到的是国内地址,你不备案,这个域名解析未来就可能会失效。 (你借用的其它网站的子域名情况除外,因为他们的网站本身主域名有可能已经备案。) …...
5 个适用于 Linux 的开源日志监控和管理工具
当Linux等操作系统运行时,会发生许多事件和在后台运行的进程,以实现系统资源的高效可靠的使用。这些事件可能发生在系统软件中,例如 init 或 systemd 进程或用户应用程序,例如 Apache、MySQL、FTP 等。 为了了解系统和不同应用程序…...
树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写工具 (四)
简介 当需要大批量使用树莓派时, SD Card烧录过程中的重复和繁杂操作需要被工具给取代, AT Disk Imager这就出现了;软件介绍 实现监控读卡器,当SD Card接入读卡器时自动格式化、 烧写设定镜像、并自动软弹出设备;目前可设定参数: 1) 镜像文件, 烧录的镜…...
Redis 性能管理 主从复制与哨兵模式
目录 redis性能管理 内存碎片率 如何清理内存 面试题 Redis雪崩 Redis集群大面积故障 面试:Redis的缓存击穿 Redis的缓存穿透 Redis的集群高可用方案 redis的主从复制 哨兵模式 redis性能管理 redis的数据缓存在内存当中 info memory #在redis数据库中查…...
volatile 详解
目录 一. 前言 二. 可见性 2.1. 可见性概述 2.2. 内存屏障 2.3. 代码实例 三. 不保证原子性 3.1. 原子性概述 3.2. 如何解决 volatile 的原子性问题呢? 四. 禁止指令重排 4.1. volatile 的 happens-before 关系 4.2. 代码实例 五. volatile 应用场景 5…...
Flink Operator 使用指南 之 Flink Operator安装
介绍 Flink Kubernetes Operator 充当控制平面来管理 Apache Flink 应用程序的完整部署生命周期。尽管 Flink 的Native Kubernetes 集成已经允许用户在运行的 Kubernetes(k8s) 集群上直接部署 Flink 应用程序,但自定义资源和Operator Pattern 也已成为 Kubernetes 原生部署体…...
类与对象(上篇)
前言 在之前我们学的C入门主要是为现在学习类与对象打基础,今天我们才算真正开始学习C了。因为类与对象的知识点比较多,所以我们将它分为三部分讲解,今天我们学习类与对象的上篇。 一、面向过程和面向对象的初步认识 1、面向过程 面向过程顾…...
使用SpringBoot集成MyBatis对管理员的查询操作
增删改查中的查询操作,对所有的普通管理员进行查询操作。 效果展示: 不仅可以在打开页面时进行对管理员的自动查询操作,还可以在输入框进行查询。 首先是前端向后端发送POST请求,后端接收到请求,如果是有参数传到后端…...
数据报文去哪儿了
背景 今天遇到一个诡异的现象,当接口附加一个IP时,主IP业务正常,附加IP死活不行,tcpdump抓包确可以正常抓到到业务的报文,但是在PREROUTING raw添加规则确没有命中,说明报文没有到netfilter框架内ÿ…...
Mysql中join on中的like使用
1、使用mysql中的函数CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 SELECT * FROM Table1 INNER JOIN Table2 ON Table1.col LIKE CONCAT(%, Table2.col, %) 2、放弃使用join语句 SELECT * FROM Table1, T…...
微信运营神器:从群发到批量添加,让你的微信营销更轻松
在这个数字化时代,微信已经成为了我们生活中不可或缺的一部分。对于许多企业和个人来说,微信营销也是非常重要的一部分。但是,微信营销并不是一件容易的事情,需要花费大量的时间和精力。为了解决这个问题,今天我们将向…...
白杨SEO:2B企业营销是什么?当下主流的短视频直播平台有哪些?企业营销要做短视频直播选哪个平台更好?
今天白杨SEO就正式来讲讲2B企业营销选择哪个短视频直播平台更好? 图片在公众号:白杨SEO上看。 文章大纲提前看: 1、先说说2B企业营销是什么? 2、当下主流的短视频直播平台有哪些? 3、2B企业营销要做短视频直播选哪…...
将word中的表格无变形的弄进excel中
在上篇文章中记录了将excel表拷贝到word中来: 记录将excel表无变形的弄进word里面来-CSDN博客 本篇记录:将word中的表格无变形的弄进excel中。 1.按F12,“另存为...”,保存类型:“单个文件页面”,保存。…...
东莞纸托厂哪家口碑好
探寻优质包装:东莞市禾本包装有限公司,环保与专业并重坐落于东莞市茶山镇南塘路11号的东莞市禾本包装有限公司,以其优良的环保理念和专业的设计生产实力,在纸托行业树立了良好的口碑。环境优美,交通便利禾本包装有限公…...
月饼机排名:企业选购选型关键策略深度解析
月饼机排名与企业选购选型全攻略:高频疑问解答,选对设备少走弯路"月饼机排名≠选购唯一标准,企业选型更需结合生产需求与设备适配性" 很多企业在选购月饼机时,容易陷入排名误区,忽略实际生产场景的匹配&…...
RH850 中断处理详解
Exception Cause List 下面是所有支持的exception类型,其中FENMI FEINT EIINT被称为中断:下面是每种exception类型的详细解释:两种中断地址处理方式 通过寄存器进行设置: 当RBASE.RINT 或 EBASE.RINT 1时,必然采用直…...
如何免费获取IBM Plex企业级字体:完整指南与实用技巧
如何免费获取IBM Plex企业级字体:完整指南与实用技巧 【免费下载链接】plex The package of IBM’s typeface, IBM Plex. 项目地址: https://gitcode.com/gh_mirrors/pl/plex 在当今数字化时代,字体选择直接影响产品的专业形象和用户体验。IBM Pl…...
AI 音乐视频工具怎么选?批量制作、歌曲一键成片和音频转 MV 对比指南
AI 音乐视频工具怎么选?批量制作、歌曲一键成片和音频转 MV 对比指南 批量制作音乐视频,优先看音频解析、节奏对位、画面生成、歌词处理和导出封装是否在同一条流程里完成。 批量制作音乐视频,该选哪类工具? 批量制作音乐视频应…...
终极指南:如何为iTerm2选择最适合你的终端配色方案
终极指南:如何为iTerm2选择最适合你的终端配色方案 【免费下载链接】iTerm2-Color-Schemes Over 450 terminal color schemes/themes for iTerm/iTerm2. Includes ports to Terminal, Konsole, PuTTY, Xresources, XRDB, Remmina, Termite, XFCE, Tilda, FreeBSD VT…...
AI内容简报制作全攻略:4种方法加速WordPress博客创作与SEO排名提升
我曾经花了四个小时研究一篇博客文章,才开始动笔写一个字。这是WordPress博主常犯的一个陷阱,他们花费数小时分析竞争对手,只是为了在搜索结果首页排名。 这就是为什么我们将工作流程迁移到人工智能驱动的简报系统的原因。我们使用SEOBoost等…...
零信任架构下的AI内存安全系统设计与实践
1. MemTrust:零信任架构下的AI内存系统革命 在AI技术快速发展的今天,内存系统正成为支撑智能代理协作与个性化服务的核心基础设施。作为一名长期关注AI系统架构的研究者,我见证了从早期简单的对话记忆到如今复杂的多模态上下文管理的演进过程…...
AI模型选型:效率与性能的平衡实践
1. 模型选择的核心挑战:效率与性能的平衡 在AI应用落地的实际场景中,我们常常面临一个关键抉择:究竟应该选择参数规模庞大的尖端模型,还是采用更轻量化的解决方案?这个问题看似简单,实则涉及到计算资源、环…...
高效智能的B站会员购抢票助手:5大通知系统让你的成功率提升300%
高效智能的B站会员购抢票助手:5大通知系统让你的成功率提升300% 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 还在为抢不到B站会员购门票而烦恼吗?biliTickerBuy作为一…...
