请求对象

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

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对象的更多相关文章

  1. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  2. django rest-framework 2.请求和响应

    一.请求对象 REST 框架引入Request来扩展常规的HttpRequest,并提供了更灵活的请求解析.Request对象的核心功能是request.data属性. 导入方式: from rest ...

  3. 03-【request对象获取请求的数据 & request对象存取值】

    request概述(封装了客户端所有的请求数据) request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在 ...

  4. 【JavaWeb】请求和响应Request&Response

    请求 请求对象 关于请求 顾名思义,意思就是请求一个"对象" 请求不到的,别想了 请求,就是使用者希望从服务器端索取一些资源,向服务器发出询问.在B/S架构中,就是客户浏览器向服务 ...

  5. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

    静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

  6. Django 请求和响应 request return

    request.method 请求方法 request.get  get请求信息 request.post  post请求信息 request.path 请求路径 方法: requset.get_fu ...

  7. django (装饰器,母版继承,自定义,request对象,response对象)

     1. 装饰器  1.    def wrapper(fn):    def inner(*args,**kwargs):     执行被装饰函数之前的操作     ret = fn(*args,** ...

  8. Django REST FrameWork中文教程2:请求和响应

    从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象REST框架引入了Request扩展常规的对象HttpRequest,并提供更灵活的请求解析.Request对 ...

  9. request 对象和 response 对象

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...

随机推荐

  1. 【java虚拟机】jvm内存模型

    作者:pengjunlee原文链接:https://blog.csdn.net/pengjunlee/article/details/71909239 目录 一.运行时数据区域 1.程序计数器 2.J ...

  2. Spark Core核心----RDD常用算子编程

    1.RDD常用操作2.Transformations算子3.Actions算子4.SparkRDD案例实战 1.Transformations算子(lazy) 含义:create a new data ...

  3. Mac Ideal 常用快捷键

    智能提示 ⌘ -> command ⇧ -> shift ⌥ -> option -> 上箭头 -> 下箭头 ⌃ -> Control mac的option键  = ...

  4. Verilog实例数组

    编写 Verilog 代码多年,至今才无意中发现了一种奇怪的语法,估计见过的这种的写法的人,在 FPGA 开发者中不会超过 20% 吧. 直接来看代码吧.先定义了一个简单的模块,名为 mod. mod ...

  5. 博观约取系列 ~ 探测Bert Finetune对向量空间的影响

    熟悉NLP的同学对Bert Finetune一定不陌生,基本啥任务上来都可以Bert Finetune试一把.可是模型微调一定比直接使用预训练模型效果好么?微调究竟对Bert的向量空间产生了哪些影响嘞 ...

  6. pip install 报错 TypeError: 'module' object is not callable

    $ pip install filetype Traceback (most recent call last): File "/usr/local/bin/pip2", line ...

  7. Docker容器管理——进入容器命令

    一.docker exec 命令(这个命令的本质就是让docker exec替我在容器执行一条命令,当执行的命令是/bin/bash的时候就是执行一条登陆命令,则会进入容器内部) 1.让docker ...

  8. idea配置tomcat及中文乱码解决

    放在前面:不要使用tomcat10,访问自己的页面会报404错误,目前无解,在这个坑爬了一下午,最终换了tomcat 9才解决.所以我选择了tomcat 9 + idea 2021.2版本 配置步骤: ...

  9. Linux常用命令 - more命令详解

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 每次显 ...

  10. vue从mock数据过渡到使用后台接口

    说明: 最近在搭建一个前端使用vue-element-admin,后端使用springBoot的项目. 由于vue-element-admin使用的是mock的模拟数据跑起来的项目,所以在开发过程中难 ...