当前位置: 首页 > news >正文

【Django-01】 视图函数和视图类

作用

用于返回给前端数据

详解

    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框架内&#xff…...

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,“另存为...”,保存类型:“单个文件页面”,保存。…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...