一.Flask中的request方法

1.数据相关

#flask中request,render_template等方法要通过引包的方式引入
from flask import request

request.args # 获取URL中的数据
request.form # 获取form表单中(FormData)的数据
request.values # 获取args+form 知道就可以了
request.data # 流, 获取请求体中的原始数据
request.json # 字典, 请求头中带有Content-Type:application/json 将请求体中的数据反序列化到json中
但是在data中依然存储这原始数据bytes

request.files 获取FormData中的文件数据 request.files.get("my_file")
request.files.save(默认提交的文件名)

2.常用方法

request.cookies  # 将cookies中信息读取出来
request.headers # 获取请求头中的信息

3.获取路径相关

# 获取当前的url路径
print(request.path)# /req

# 当前url路径的上一级路径
print(request.script_root)

# 当前url的全部路径
print(request.url) # http://127.0.0.1:5000/req

# 当前url的路径的上一级全部路径
print(request.url_root ) # http://127.0.0.1:5000/

二.request方法使用

1.request.method 获取http请求的方式,Flask 的 request 中给我们提供了一个 method 属性里面保存的就是前端的请求的方式

print(request.method) # POST 看来可以使用这种方式来验证请求方式了

2.request.form 获取form表单中传递过来的值

print(request.form)  # ImmutableMultiDict([('key', 'asd')])
# ImmutableMultiDict 它看起来像是的Dict print(request.form["key"]) # 'asd'
print(list(request.form.keys())) # ['key'] # 将它的结果转化为字典便于使用, 其中有些坑,小心
req_dict = dict(request.form)
req_dict = request.form.to_dict()

3.request.args  其中包含url所有的参数

如图访问,结果如下

print(request.args)  #  ImmutableMultiDict([('name', '1')])

4. request.values  包含所有参数,只要是参数就包含

输入如图所示, 结果如下

print(request.values)
# CombinedMultiDict([ImmutableMultiDict([('name', '1')]), ImmutableMultiDict([('值', 'asd')])])

注意

  如果url和form中的Key重名的话,使用vlaues.to_dict()时,form中的同名的key中value会被url中的value覆盖,但是request.values()的结果还是有两个

# http://127.0.0.1:5000/test?name=1
print(request.values.to_dict()) # {'name': 1} print(request.values)
# CombinedMultiDict([ImmutableMultiDict([('name', '1')]), ImmutableMultiDict([('name', '10')])])

5.request.cookies 读取cookies中的信息,存在浏览器端的字符串都会包含,前提是要开启浏览器的cookies

6.request.headers 获取本次请求的请求头

print(request.headers)    

Host: 127.0.0.1:5000
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

7. request.data 无法处理的数据就变成了字符串存放在data中

request是基于mimetype进行处理的,mimetype的类型以及字符串 : http://www.w3school.com.cn/media/media_mimeref.asp,如果不属于上述类型的描述,request就会将无法处理的参数转为Json存入到 data 中,其实我们可以将 request.data , json.loads 同样可以拿到里面的参数

8. request.files  其中包含上传的文件, flask将这个操作做了一些封装,使用很简单

html代码

print(request.files)  # ImmutableMultiDict([('file', <FileStorage: 'test.txt' ('text/plain')>)])
print(request.files["file"]) # <FileStorage: 'test.txt' ('text/plain')>
my_file = request.files["file"]
my_file.save("test.txt") # 保存文件,里面可以写完整路径+文件名

9.request.json 在请求头中写入了 "application/json" 使用 request.json 则返回json解析数据, 否则返回 None

Flask系列02--Flask中的request的更多相关文章

  1. Flask系列(二)Flask基础

    知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref(django),werkzeug(flask),uwsgi(上线) 2.实例化Flask对象,里面是有参数的 app = F ...

  2. Flask系列(六)Flask实例化补充及信号

    一.实例化补充 instance_path和instance_relative_config是配合来用的. 这两个参数是用来找配置文件的,当用app.config.from_pyfile('setti ...

  3. Flask系列之蓝图中使用动态URL前缀

    让我们先来看一个简单的例子,假设有下面这样一个蓝图(是关于用户主页的): from flask import Blueprint, render_template profile = Blueprin ...

  4. Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler

    一.使用 Flask中的特殊装饰器(中间件)方法常用的有三个 @app.before_request # 在请求进入视图函数之前 @app.after_request # 在请求结束视图函数之后 响应 ...

  5. Flask系列(四)Flask实现简单页面登陆

    from flask import Flask,render_template,request,redirect,session app = Flask(__name__,template_folde ...

  6. Flask系列(五)Flask实现分页

    一.flask分页组件 from urllib.parse import urlencode,quote,unquote class Pagination(object): ""& ...

  7. [.NET WebAPI系列02] WebAPI 中的HTTP通信

    [前言] 本节用于承上启下,通过第一节了解的WebAPI的基本语法,Controller CRUD方法的基本格式: 但很多场合,第一节中的Web API Controller方法返回的信息 过于简单, ...

  8. 第三篇 Flask 中的 request

    第三篇 Flask 中的 request   每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前 ...

  9. Flask最强攻略 - 跟DragonFire学Flask - 第三篇 Flask 中的 request 之 先知道有这么个东西

    每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一 ...

随机推荐

  1. js string 字符串

    mutil lines string 多行字符串, 由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用...表示,是单撇号, 不是单引号. 这是一个 多行 字符 ...

  2. Linux安装和配置Vim7.4

    一.简介 Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体.1999 年Emacs被选为L ...

  3. PAT 1084 外观数列(20)(代码+思路+推荐测试用例)

    1084 外观数列(20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 ...

  4. 20172325 2017-2018-2 《Java程序设计》第十周学习总结

    20172325 2017-2018-2 <Java程序设计>第十周学习总结 教材学习内容总结 1.集合与数据结构 集合是一种对象 集合按照保存类型来看可以分为两种: (1)同构集合:只能 ...

  5. 大神真会玩~这组C4D动图,我都看了一整天!

    来自法国的Guillaume Kurkdjian 擅长创作一些平面动态图像 每张都诉说了一个小笑话或者小故事 像个极其微型的小电影. 这些动图的灵感可能来自某个交通工具 或是某个悠闲的时光 也可能是生 ...

  6. 02 Maven 入门使用

    Maven 入门使用 1. Maven 项目工程目录约定 Project |-src | |-main | | |-java -- 存放项目的 .java 文件 | | |-resources -- ...

  7. KBMMW 4.80.00 发布

    一大波更新来了. 4.80.00 March 30 2015 Important notes (changes that may break existing code)        ======= ...

  8. 2018.10.12 NOIP模拟 字符处理(模拟)

    传送门 sb模拟,考试跟着sb了90分. 代码

  9. hdu -1114(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 思路:求出存钱罐装全部装满情况下硬币的最小数量,即求出硬币的最小价值.转换为最小背包的问题. # ...

  10. 20. Dog,Man's Best Friend 狗,人类最好的朋友

    . Dog,Man's Best Friend 狗,人类最好的朋友 ①The dogs has always been considered man's best friend.Always note ...