Django整理(五) - 请求与响应 - request对象
请求对象
一、客户端传参的几种方式
1. 通过URL路径(path)传递,例如:http://127.0.0.1:8000/news/1/2,两个参数:id和page
2. 通过 query string查询字符串 传递
i. 例如:http://127.0.0.1:8000/news?category=1&page=2
3. 通过 body请求体 传递,又可根据传递的数据格式,分为:
i. 键值对:category=1&page=2
ii. 表单数据
iii. 非表单数据(json,xml)
4. 通过http协议请求头(header)传递
二、HttpRequest对象
一、Django请求和响应过程:

二、request对象常用属性:

三、QueryDict对象
· 所在的包:django.http.QueryDict
· HttpRequest 对象中的 GET 和 POST 属性都是QueryDict类型
· 与python字典不同:QueryDict对象一个键可以保存多个值
· get() 方法
(1) 根据键获取值
(2) 如果一个键同时拥有多个值,将获取最后一个值
(3) 如果键不存在则返回None值,可以设置返回自定义的默认值
dict.get('键', 默认值)
· getlist() 方法
(1) 根据键获取多个值,值以列表返回
(2) 如果键不存在则返回空列表[]
dict.getlist('键', 默认值)
四、通过request获取请求参数
1. 获取查询字符串
一、需求
获取URL地址 http://127.0.0.1:8000/news?category=1&page=2
二、代码参考

重要:查询字符串不区分请求方式,即使客户端通过POST方式发起请求,依然可以通过request.GET获取
请求中的查询字符串数据。
2. 获取请求体数据
请求体数据格式不固定,可以是表单类型字符串,可以是JSON字符串,可以是XML字符串,应区别对待。
可以发送请求体数据的请求方式有POST、PUT、PATCH、DELETE。
2.1 获取表单数据Form Data(键值对)
前端发送的表单或键值对类型的请求体数据,可以通过request.POST属性获取

重要:request.POST只能用来获取POST方式的请求体表单数据或键值对数据。如果为非post请求提交的
请求体数据,或者是请求体数据类型为非表单或非键值对数据,则需要通过request.body属性获取提交的
数据后,再自己手动解析。
2.2 非表单类型 Non-Form Data
非表单类型的请求体数据,Django无法自动解析,可以通过request.body属性获取最原始的请求体数据,自
己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。
例如获取请求体中的json数据:{"category": 1, "page": 2}

3. 获取请求头数据
可以通过request.META属性获取请求头headers中的数据,request.META为字典类型。
注意:
· 获取自定义的请求头属性值时,需要加前缀 HTTP_ 并转成大写,作为键来获取值
示例:

Django整理(五) - 请求与响应 - request对象的更多相关文章
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- django rest-framework 2.请求和响应
一.请求对象 REST 框架引入Request来扩展常规的HttpRequest,并提供了更灵活的请求解析.Request对象的核心功能是request.data属性. 导入方式: from rest ...
- 03-【request对象获取请求的数据 & request对象存取值】
request概述(封装了客户端所有的请求数据) request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在 ...
- 【JavaWeb】请求和响应Request&Response
请求 请求对象 关于请求 顾名思义,意思就是请求一个"对象" 请求不到的,别想了 请求,就是使用者希望从服务器端索取一些资源,向服务器发出询问.在B/S架构中,就是客户浏览器向服务 ...
- Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作
静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...
- Django 请求和响应 request return
request.method 请求方法 request.get get请求信息 request.post post请求信息 request.path 请求路径 方法: requset.get_fu ...
- django (装饰器,母版继承,自定义,request对象,response对象)
1. 装饰器 1. def wrapper(fn): def inner(*args,**kwargs): 执行被装饰函数之前的操作 ret = fn(*args,** ...
- Django REST FrameWork中文教程2:请求和响应
从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象REST框架引入了Request扩展常规的对象HttpRequest,并提供更灵活的请求解析.Request对 ...
- request 对象和 response 对象
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...
随机推荐
- 【springcloud】一文带你搞懂API网关
作者:aCoder2013 https://github.com/aCoder2013/blog/issues/35 前言 假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员.商品 ...
- Maven解决依赖冲突
依赖冲突 若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的. 短路优先 本项目-->A.jar-->B ...
- Object 的wait()方法
The java.lang.Object.wait() causes current thread to wait until another thread invokes the notify() ...
- 关于PLSQL中的一些问题总结:在PLSQL中书写DDL等
关于问题前导,使用的数据表中涉及到的字段和类型: 在PLSQL中create.drop.truncate等DDL是没有办法直接执行的. 必须要使用: Execute immediate 'DDL语句' ...
- 磁盘“Seagate”没有被推出,因为一个或多个程序可能正在使用它。
推出移动硬盘失败,解决方案: 执行 lsof /Volumes/Seagate/ 可以看到哪些进程在占用磁盘 $ lsof /Volumes/Seagate/ COMMAND PID USER FD ...
- mini-ndn0.5.0 安装教程 (避免踩坑)
写在前面 首先需要确定一些配置,因为在安装的过程中需要编译一些内容,所以需要提前准备好. 本人之前ubuntu系统可能比较乱,在尝试很多次安装后,仍然失败,所以就直接重装了一下.说一下我自己的一些配置 ...
- Linux/CentOS基础命令1
一.系统相关运行命令1.系统关机命令:shutdown# shutdown 关机 Shutdown scheduled for Fri 2019-03-29 11:36:45 CST, use 'sh ...
- Spring全自动AOP和项目加入jar包
一.jar可以引进项目中,复制到路下后,要add as library,加载到工作空间中才能引入: 也jar包放在硬盘的项目目录外面,可以多个项目引入共用: 二.xml配置 1.aop全自动配置 2. ...
- shell脚本之循环语句 for-while-until
目录: 一.for循环语句 二.while循环语句 三.unti循环语句 一.for循环语句 读取不同的变量值,用来逐个执行同一组命令 举例 批量添加用户◆ 用户名存放在users.txt文件中, ...
- C# 加载Word的3种方法
本次经验内容分享通过C#程序来加载Word文档的3种不同方法.分别是: 1. 加载本地Word文档 2. 以只读模式加载Word文档 3. 从流加载Word [程序环境] Windows 10 Vis ...