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
猜你喜欢
- 本文实例讲述了Centos7.4环境安装lamp-php7.0的方法。分享给大家供大家参考,具体如下:一. 环境准备桥接模式能访问外网#pi
- 在我的上篇文章发出之后,我听到对“WEb2.0视觉风格”这个称谓的不认同声音。其实这并不出乎我的意料,因为,我在认真的开始思考“WEb2.0
- oracle命令删除用户:connect / as sysdba; shutdown abort; startup;&n
- 分享一下 IntelliJ IDEA 2021.1 的激活破解教程,相当于永久激活了,亲测有效,下面是详细文档哦~申明:本教程 Intell
- 语法结构: 1. Cast 语法结构:CAST ( expression AS data_type [ ( length ) ] ) 2.
- 官方文档https://developers.weixin.qq.com/miniprogram/dev/devtools/download
- 本文实例讲述了php返回相对时间(如:20分钟前,3天前)的方法。分享给大家供大家参考。具体如下:function plural($num)
- 你有没有觉得你的CSS样式表文件过于臃肿?其实如果你注意并培养一些比较好的CSS书写习惯,我想你的CSS样式表过于”肥胖”的问题会得到很好的
- 哪的资料都不如官方资料权威。今天总算从MSDN中择出了ASP编码问题的解决方案。下面是MSDN中的一段话。Setting @CODEPAGE
- 本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下刚开始学习python,写了一个聊天室练练手。Server
- 如下所示:# 创建一个空的 DataFramedf_empty = pd.DataFrame()#或者df_empty = pd.DataF
- 在windows+iis服务器上运行asp程序可能会出现数据库无法更新的情况,具体错误信息可能为: 1、Microsoft JET Data
- 用python写了一个简单版本的textrank,实现提取关键词的功能。import numpy as np import jieba im
- asp定时生成静态HTML的代码,对于缓解服务器压力有很大帮主,需要的朋友可以参考下。<% '判断是否要生成新的HT
- 是不是有这么一个场景,对外提供一堆数据或者是要返回给用户一个结果。但是不想把内部的一些数据和逻辑暴露给对方。。。简单点来说,就是想以服务的方
- 最新在学习Python的基础入门系列课程,今天学习到使用python 的内置库smtplib发送邮件内容。使用Python发送邮件步骤简单:
- 我们平时生活的娱乐中,看电影是大部分小伙伴都喜欢的事情。周围的人总会有意无意的在谈论,有什么影片上映,好不好看之类的话题,没事的时候谈论电影
- 最近开始在项目中使用Quickwork For Asp,虽然该框架是自己独立完成的,不过功能没做过详细的总结,所以很多参数总是会弄错,毕竟鱼
- 很多的朋友一而再,再而三的在Server.Mappath上卡壳,cnbruce也是一遍两遍地重复,还是不能全部解决,所以通过下面的举例,希望
- 两个文章,放在一块了。第二个比较强。====================================================