Flask request 属性详解
一、关于request
在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要。在 Flask 中由全局的 request 对象来提供这些信息。
从Flask模块导入request:from flask import request
request的属性:下面是request可使用的属性,其中黑体是比较常用的。
属性名 | 解释 |
form | 一个从POST和PUT请求解析的 MultiDict(一键多值字典)。 |
args |
MultiDict,要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性: searchword = request.args.get('key', '') |
values |
CombinedMultiDict,内容是form 和args 。 可以使用values替代form和args。 |
cookies | 请求的cookies,类型是dict。 |
stream |
在可知的mimetype下,如果进来的表单数据无法解码,会没有任何改动的保存到这个 stream 以供使用。很多时候,当请求的数据转换为string时,使用data 是最好的方式。这个stream只返回数据一次。
|
headers | 请求头,字典类型。 |
data | 包含了请求的数据,并转换为字符串,除非是一个Flask无法处理的mimetype。 |
files | MultiDict,带有通过POST或PUT请求上传的文件。 |
environ | WSGI隐含的环境配置。 |
method | 请求方法,比如POST、GET。 |
path | 获取请求文件路径:/myapplication/page.html |
script_root | |
base_url | 获取域名与请求文件路径:http://www.baidu.com/myapplication/page.html |
url | 获取全部url:http://www.baidu.com/myapplication/page.html?id=1&edit=edit |
url_root | 获取域名:http://www.baidu.com/ |
is_xhr |
如果请求是一个来自JavaScript XMLHttpRequest 的触发,则返回True ,这个只工作在支持X-Requested-With 头的库并且设置了XMLHttpRequest 。
|
blueprint | 蓝图名字。 |
endpoint |
endpoint匹配请求,这个与view_args 相结合,可是用于重构相同或修改URL。当匹配的时候发生异常,会返回None。
|
json |
如果mimetype 是application/json ,这个参数将会解析JSON数据,如果不是则返回None。 可以使用这个替代get_json()方法。 |
max_content_length |
只读,返回MAX_CONTENT_LENGTH 的配置键。
|
module |
如果请求是发送到一个实际的模块,则该参数返回当前模块的名称。这是弃用的功能,使用blueprints 替代。
|
routing_exception = None |
如果匹配URL失败,这个异常将会/已经抛出作为请求处理的一部分。这通常用于NotFound 异常或类似的情况。
|
url_rule = None |
内部规则匹配请求的URL。这可用于在URL之前/之后检查方法是否允许(request.url_rule.methods) 等等。 默认情况下,在处理请求函数中写下 print('request.url_rule.methods', request.url_rule.methods) 会打印: request.url_rule.methods {‘GET’, ‘OPTIONS’, ‘HEAD’} |
view_args = None | 一个匹配请求的view参数的字典,当匹配的时候发生异常,会返回None。 |
其他方法 |
get_json(force=False, silent=False, cache=True) on_json_loading_failed(e) |
二、常用方法的使用
#代码示例,仅仅是为了测试request的属性值
@app.route('/login', methods = ['GET','POST'])
def login():if request.method == 'POST':if request.form['username'] == request.form['password']:return 'TRUE'else:
#当form中的两个字段内容不一致时,返回我们所需要的测试信息return str(request.headers) #需要替换的部分else:return render_template('login.html')
1、method:请求的方法
return request.method #POST
2、form:返回form的内容
return json.dumps(request.form) #{"username": "123", "password": "1234"}
3、args和values:args返回请求中的参数,values返回请求中的参数和form
return json.dumps(request.args)
#url:http://192.168.1.183:5000/login?a=1&b=2、返回值:{"a": "1", "b": "2"}
print(request.args['a'])
#输出:1
return str(request.values)
#CombinedMultiDict([ImmutableMultiDict([('a', '1'), ('b', '2')]), ImmutableMultiDict([('username', '123'), ('password', '1234')])])
4、cookies:cookies信息
return json.dumps(request.cookies) #cookies信息
5、headers:请求headers信息,返回的结果是个list
return str(request.headers) #headers信息
request.headers.get('User-Agent') #获取User-Agent信息
6、url、path、script_root、base_url、url_root:看结果比较直观
return 'url: %s , script_root: %s , path: %s , base_url: %s , url_root : %s' % (request.url,request.script_root, request.path,request.base_url,request.url_root)
'''
url: http://192.168.1.183:5000/testrequest?a&b ,
script_root: ,
path: /testrequest ,
base_url: http://192.168.1.183:5000/testrequest ,
url_root : http://192.168.1.183:5000/
'''
7、date、files:date是请求的数据,files随请求上传的文件
@app.route('/upload',methods=['GET','POST'])
def upload():if request.method == 'POST':f = request.files['file']filename = secure_filename(f.filename)#f.save(os.path.join('app/static',filename))f.save('app/static/'+str(filename))return 'ok'else:return render_template('upload.html')#html
<!DOCTYPE html>
<html><body><form action="upload" method="post" enctype="multipart/form-data"><input type="file" name="file" /><br /><input type="submit" value="Upload" /></form></body>
</html>
Flask request 属性详解相关推荐
- request.getContextPath详解
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+ ...
- IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上)...
IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上) 在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的 ...
- IIS负载均衡-Application Request Route详解第一篇: ARR介绍
IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Appli ...
- python中文读音ndarray-numpy中的ndarray方法和属性详解
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...
- spring MVC请求处理类注解属性详解
spring MVC请求处理类注解属性详解
- Meta http-equiv属性详解
Meta http-equiv属性详解 博客分类: Web综合 HTML浏览器IECache搜索引擎 http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮 ...
- IIS负载均衡-Application Request Route详解第六篇:使用失败请求跟踪规则来诊断ARR
失败请求跟踪规则(FailedRequest Tracing Rules)是IIS7中对请求处理进行诊断的强大的工具.我们本篇文章将会带领大家一步步的来配置失败请求跟踪规则,并且告诉大家如何使用这些信 ...
- IIS负载均衡-Application Request Route详解第五篇:使用ARR来配置试点项目
看到本篇的题目,大家可能感到有点奇怪!下面,我们就来看看这到底是什么意思. 大家可能遇到过这样的一种情况:希望根据某些请求用户的特性,将用户的请求导向不同的站点(请大家这里区分"亲缘性&qu ...
- IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构
本篇的主要目的是带领大家一起来使用ARR来实现一个三层部署架构.这里的三层部署架构主要是由:服务层,应用程序服务器层已经数据层实现.如下图所示: 每次一提到"层"这个字的时候,似乎 ...
最新文章
- java怎么写隐藏bug_同事牛逼啊,写了个隐藏 bug,我排查了 3 天才解决问题!
- Zabbix监控网络设备日志文件及字段报警
- 易企秀更换模板里的音乐_易企秀黄金:探索中国 SaaS 企业走向成功的路径
- 类和对象_月隐学python第15课
- Android 之自定义组件
- (王道408考研操作系统)第二章进程管理-第三节2:实现进程互斥的软件方法
- 零基础入门深度学习(3) - 神经网络和反向传播算法
- memcached的缺点
- 【干货】数字经济时代的新思考:企业如何进行数字化转型及如何称为数据驱动型企业?...
- 一个页面多个ajax统一loading,页面有多个向后台发送的请求加载过程中显示loading,加载完成loading消失...
- 2021“科创中国”开源创新榜评选专家评审会在北京成功举办
- 开课吧课堂之throws如何去使用?
- 数字地球与计算机技术联系,数字地球与地球空间信息科学的关系
- C++中_tmain()和main()
- quartz mysql 配置_quartz的数据库配置
- 软件工程期末考试超全试题库(含答案 和解析)
- 免费的文字转语音工具
- CentOS安装onlyoffice
- 设计自有芯片将成为新常态?
- 浅谈利用NLG技术来进行游戏自动化(生成随机剧情随机对话)的可行性
热门文章
- 在职读研有意义么?来社科院与杜兰大学金融管理硕士项目探寻答案
- WINDOWS TRACE32+JTAG调试技巧
- CC2538 ZigBee 芯片 两路UART串口同时使用
- openmpi雅可比迭代法_用雅可比迭代法求线性方程组的解的并行算法(MPI)
- #pragma是什么
- python新浪_【图解】Python模拟登录新浪微博
- 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项
- wpa_supplicant2.9之sae握手流程
- lg显示器工厂模式怎么进入_一目了然 揭秘品牌LCD工厂模式进入方法
- vue中template中的scope到底是个什么?