请求对象

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

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. uwp 之语音识别

    xml code ---------------------------------------------- <Page x:Class="MyApp.MainPage" ...

  2. WPF---依赖属性(一)

    一.概要 C#中属性是抽象模型的核心部分,而依赖属性是专门针对WPF的. 在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使得我们可以通过和以前一样的方式来使用依赖属性. 依赖属性优点如下: ...

  3. ProjectEuler 009题

    题目: A Pythagorean triplet is a set of three natural numbers, a b c, for which, a2 + b2 = c2 For exam ...

  4. vue@cli3 public目录下的静态图片,如何使用在css类文件中(sass可行,纯css不行)

    之前写了一篇vue文件怎么使用的文章,有人问我怎么在css文件中使用public下的文件,这是个好问题,因为我之前都没有研究过 需要解决的2个问题 一开始按照vue文件的使用方式(https://ww ...

  5. 论如何在服务器上部署一个自己的web前端项目

    就在前两天,有新人通过邮箱问到笔者,如何部署自己的web前端项目?笔者在此详细介绍. 一.购买云服务器 配置用户名密码.安全组 二.下载Xshell于Xftp工具 用于登录服务器和文件上传 三.在li ...

  6. Mysql基本知识整理

    一.简介 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 2.关系型数据库 ...

  7. plsql中数据生成工具data generator的使用

    使用数据库时,有时需要使用大量的数据,可以用PLSQL Developer提供的Data Generator工具, 这里记录一下工具的介绍及几个使用注意事项 1.工具介绍 功能入口位于 工具 菜单下, ...

  8. Servlet学习笔记(三)之HttpServletResponse

    init() 方法中参数 ServletConfig 对象使用 通过ServletConfig 获得 ServletContext对象 使用 HttpServletRequest 与HttpServl ...

  9. Linux常用命令(一)之文件处理命令

    分时的多用户.多任务的操作系统 多数的网络协议的支持(unix和tcp/ip协议是同时发展起来的),方便的远程管理(可以通过图形.命令行) 强大的内存管理和文件管理系统 大量的可用软件和免费软件(游戏 ...

  10. Mybatis-Plus - 条件构造器 QueryWrapper 的使用

    目录 前言 查询示例 基础代码 QueryWrapper 的基本使用 QueryWrapper 的lambada写法 LambadaQueryWrapper 的使用 LambdaQueryChainW ...