Flask request 对象介绍
作者:tigeriaf 发布时间:2022-11-01 23:45:35
前言:
一个完整的 HTTP
请求,包括客户端向服务端发送的 Request
请求和服务器端发送的 Response
响应。为了能方便的访问获取请求及响应报文信息,Flask
框架提供了一些内建对象,下面就来说一下 Flask 针对请求提供的内建对象request
。
1、request请求对象
request
请求对象封装了从客户端发来的请求报文信息,我们能从request
对象上获取请求报文中的所有数据。 其大部分功能是由依赖包Werkzeug
完成的,Flask
做了一些特定功能的封装,形成了request
请求对象。
1.1request请求对象的使用
导入flask包中的request对象,就可以直接在请求函数中使用该对象了。
from flask import request
@app.route('/user', methods=['GET', 'POST'])
def user():
if request.method == 'POST':
user_name = request.form['user_name']
return 'user :{} add success!'.format(user_name)
else:
user_id = request.args.get('user_id', 0)
return 'Hello user:{}!'.format(user_id)
上述代码中:request对象中的method
变量可以获取当前请求的方法,即GET、POST、PUT、DELETE等;form变量获取POST请求form-data表单中的数据,本质是一个字典,如果提交的表单中没有user_name
,则会返回 400 Bad Request
的错误,当然也可以使用异常捕获机制处理。request.args.get()
方法获取的是GET请求的url中的参数(问号?之后的部分),第一个参数指定获取的 url 参数的 key,第二个参数指定默认值,当 key 不存在时,则返回默认值。
如下:
GET请求
POST请求
除此之外,请求报文中的其他信息都可以通过 request 对象提供的属性和方法获取,常用的部分如下:
url
:请求的url
args:Werkzeug
的ImmutableMultiDict
对象,存储解析后的查询字符串,可通过字典方式获取键值blueprint
:当前蓝本的名称cookies
:一个包含所有随请求提交的cookies
的字典data
:包含字符串形式的请求数据endpoint
:于当前请求相匹配的端点值files:Werkzeug
的MultiDict
对象,包含所有上传文件form:Werkzeug
的ImmutableMultiDict
对象,包含解析后的表单数据values:Werkzeug
的CombinedMultiDict
对象,结合了args
和form
属性的值get_data(cache=True,as_text=False,parse_from_data=False):
获取请求中的数据,默认读取为字节字符串(bytestring),as_text为True则返回解码后的unicode
字符串get_json(self,force=False,silent=False,cache=True)
:作为 json 解析并返回数据,如果MIME
类型不是 json,返回 None(除非 force 设为 True);解析出错则抛出Werkzeug提供的BadRequest
异常(如果未开启调试模式,则返回400错误响应),如果 silent 设为 True 则返回 None;cache 设置是否缓存解析后的 json 数据headers:Werkzeug
的EnvironHeaders
对象,包含请求的头部字段json
:包含解析后的 json 数据,内部调用 get_json(),可通过字典的方式获取键值method
:请求的 HTTP 方法referrer
:请求发起的源 url,即referer
scheme
:请求的URL模式(http 或 https)user_agent
:用户代理(User Agent),包含了用户的客户端类型,操作系统类型等信息
来源:https://juejin.cn/post/7030009163803525133


猜你喜欢
- html结构如下<div class="row"> <div class="co
- match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只
- <%'asp事务处理。'测试数据库为sql server,服务器为本机,数据库名为test,表名为a,两个字段id(i
- 这是份总结,有不恰达的地方欢迎一同讨论联系方式 : 龙藏 longzang@taobao.com点击这里全幅围观或者点下面大图去 slide
- 一:什么是数据库,为什么要有数据库?数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念。数据库相信大家都耳熟能详了
- 1.数据源2.数据整体排名1)普通排名从1开始,按照顺序一次往下排(相同的值也是不同的排名)。set @rank =0;select cit
- 本文实例讲述了Python排序搜索基本算法之选择排序。分享给大家供大家参考,具体如下:选择排序就是第n次把序列中最小的元素排在第n的位置上,
- import socketimport Queueimport threadingdef worker(): &nbs
- 使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column
- 本文实例讲述了python图像处理之反色实现方法。分享给大家供大家参考。具体如下:我们先加载一个8位灰度图像每一个像素对应的灰度值从0-25
- 概念单元测试 UT测试,针对程序来进行正确检测测试工作,一个优秀强壮代码 需要有完美的 UT测试用例go test基本用法go test 测
- 最近在工作中遇到了一个小问题,如果要将字符串型的数据转换成dict类型,我第一时间就想到了使用json函数。但是里面出现了一些问题1、通过j
- 做运维的朋友应该知道,公司IDC机房经常有上架、下架、报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。  
- 本文实例为大家分享了python实现微信每日一句自动发送的具体代码,供大家参考,具体内容如下参考了一篇博客:教你使用python实现微信每天
- 本文实例讲述了Mysql数据库中数据表的优化、外键与三范式用法。分享给大家供大家参考,具体如下:数据表优化将商品信息表进行优化1.创建商品种
- 这是一个简易的员工管理系统,实现最简单的功能:1.登录用户密码验证(错误三次自动退出) 2.支持文本员工的搜索、添加、删除、修改 3.一级层
- 关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习。今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常
- 测试系统环境 Windows 2003 python 2.5.1
- 前言这篇文章主要介绍了JS大坑之19位数的Number型精度丢失问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 需求是这样的,我在.net程序里操作数据时将一些字段数据加密了,这些数据是很多系统共用的,其中一delphi程序也需要用到,并且需要将数据解