请求对象

一、客户端传参的几种方式

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_ 并转成大写,作为键来获取值

示例:

最新文章

  1. 星浩资本快速发展引擎:IT就是生产力
  2. cglib动态代理
  3. "+" 是怎样连接字符串的?
  4. linux查看磁盘系统df,du
  5. sqlserver 字符串拼接及拆开联表查询的问题
  6. 【模拟】Vijos P1005 超长数字串
  7. repeat帮定删除按钮事件,并且生成去人删除提示
  8. 201521123078 《Java程序设计》第9周学习总结
  9. 【MySql系列】MySql踩坑系列
  10. ACM Robot Motion
  11. mac下安装maven
  12. 2019.04.12 Head First
  13. h5标签兼容
  14. SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005
  15. Spectrum Scale
  16. React-Native StyleSheet属性支持
  17. Linux命令学习之xargs命令
  18. 安装ADT的时候,提示“Cannot complete the install because one or more required items could not be
  19. vi编辑器备忘录
  20. PHP开发框架

热门文章

  1. Quartz任务调度(6)schedulerListener分版本超详细解析
  2. 十:JavaWeb中的监听器(一)
  3. 我对数据库事务的理解(MYSQL中)
  4. ArrayList线程不安全怎么办?(CopyOnWriteArrayList详解)
  5. MySQL基础——常用命令
  6. 接口测试进阶接口脚本使用--apipost(预/后执行脚本)
  7. JavaWeb中表单数据的获取及乱码问题
  8. openresty lua_ssl_trusted_certificate 问题
  9. 【HMS Core 6.0全球上线】Network Kit全链路网络加速技术,应用无惧网络拥塞
  10. 从零开始实现简单 RPC 框架 9:网络通信之心跳与重连机制