一、关于request

在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要。在 Flask 中由全局的 request 对象来提供这些信息。

从Flask模块导入request:from flask import request
request的属性:下面是request可使用的属性,其中黑体是比较常用的。

Request属相
属性名 解释
form  一个从POST和PUT请求解析的 MultiDict(一键多值字典)。
args

MultiDict,要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性:

searchword = request.args.get('key', '')

values  CombinedMultiDict,内容是formargs。 
可以使用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 如果mimetypeapplication/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 属性详解相关推荐

  1. request.getContextPath详解

    <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+ ...

  2. IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上)...

    IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上) 在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的 ...

  3. IIS负载均衡-Application Request Route详解第一篇: ARR介绍

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍   说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Appli ...

  4. python中文读音ndarray-numpy中的ndarray方法和属性详解

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  5. spring MVC请求处理类注解属性详解

    spring MVC请求处理类注解属性详解

  6. Meta http-equiv属性详解

    Meta http-equiv属性详解 博客分类: Web综合 HTML浏览器IECache搜索引擎  http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮 ...

  7. IIS负载均衡-Application Request Route详解第六篇:使用失败请求跟踪规则来诊断ARR

    失败请求跟踪规则(FailedRequest Tracing Rules)是IIS7中对请求处理进行诊断的强大的工具.我们本篇文章将会带领大家一步步的来配置失败请求跟踪规则,并且告诉大家如何使用这些信 ...

  8. IIS负载均衡-Application Request Route详解第五篇:使用ARR来配置试点项目

    看到本篇的题目,大家可能感到有点奇怪!下面,我们就来看看这到底是什么意思. 大家可能遇到过这样的一种情况:希望根据某些请求用户的特性,将用户的请求导向不同的站点(请大家这里区分"亲缘性&qu ...

  9. IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构

    本篇的主要目的是带领大家一起来使用ARR来实现一个三层部署架构.这里的三层部署架构主要是由:服务层,应用程序服务器层已经数据层实现.如下图所示: 每次一提到"层"这个字的时候,似乎 ...

最新文章

  1. java怎么写隐藏bug_同事牛逼啊,写了个隐藏 bug,我排查了 3 天才解决问题!
  2. Zabbix监控网络设备日志文件及字段报警
  3. 易企秀更换模板里的音乐_易企秀黄金:探索中国 SaaS 企业走向成功的路径
  4. 类和对象_月隐学python第15课
  5. Android 之自定义组件
  6. (王道408考研操作系统)第二章进程管理-第三节2:实现进程互斥的软件方法
  7. 零基础入门深度学习(3) - 神经网络和反向传播算法
  8. memcached的缺点
  9. 【干货】数字经济时代的新思考:企业如何进行数字化转型及如何称为数据驱动型企业?...
  10. 一个页面多个ajax统一loading,页面有多个向后台发送的请求加载过程中显示loading,加载完成loading消失...
  11. 2021“科创中国”开源创新榜评选专家评审会在北京成功举办
  12. 开课吧课堂之throws如何去使用?
  13. 数字地球与计算机技术联系,数字地球与地球空间信息科学的关系
  14. C++中_tmain()和main()
  15. quartz mysql 配置_quartz的数据库配置
  16. 软件工程期末考试超全试题库(含答案 和解析)
  17. 免费的文字转语音工具
  18. CentOS安装onlyoffice
  19. 设计自有芯片将成为新常态?
  20. 浅谈利用NLG技术来进行游戏自动化(生成随机剧情随机对话)的可行性

热门文章

  1. 在职读研有意义么?来社科院与杜兰大学金融管理硕士项目探寻答案
  2. WINDOWS TRACE32+JTAG调试技巧
  3. CC2538 ZigBee 芯片 两路UART串口同时使用
  4. openmpi雅可比迭代法_用雅可比迭代法求线性方程组的解的并行算法(MPI)
  5. #pragma是什么
  6. python新浪_【图解】Python模拟登录新浪微博
  7. 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项
  8. wpa_supplicant2.9之sae握手流程
  9. lg显示器工厂模式怎么进入_一目了然 揭秘品牌LCD工厂模式进入方法
  10. vue中template中的scope到底是个什么?