一.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. 配置Spring框架编写XML的提示

    1. 步骤一:先复制, http://www.springframework.org/schema/beans/spring-beans.xsd 2. 步骤二:搜索XML Catalog,点击Add按 ...

  2. CentOS7下搭建基本LNMP环境,部署WordPress

    系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nginx-1.12.2.tar.gz php 7.1.11 ...

  3. 一款APP的交互文档从撰写到交付

    我第一份工作的设计总监是前百度设计师,34岁,一线设计12年:今年聊天说转了产品总监,如今39岁还活跃在行业中…… 我第二份工作的部门总监是前腾讯工程师,38岁,一线开发14年:2年前在Q群里跟我们说 ...

  4. 别人家的PS系列又来了!!!

    又到了“别人的PS”系列的日常感叹了,大家请边看推文边组织语言准备留言,用点新鲜词,不要再说什么给跪了,献上膝盖之类的,争取换点词. 好了,废话不多说,开始正文,先看几则简单的PS作品: 这两组作品出 ...

  5. 13.11.20 jquery 核心 siblings() 获得同类(不包含自己)循环所有,

    jquery 核心1.选择器,2. 创建dom 元素 3. jquery 执行时 4. 延迟执行 5. 循环 6. 计算长度.7.8 获得选择器和所在节点 9. 获得下标 10. 元素存放数据  11 ...

  6. myeclipse svn 插件去除已经保存的密码方法

    myeclipse svn 插件去除已经保存的密码方法   删除掉C:\Documents and Settings\hao\Application Data\Subversion\auth\svn. ...

  7. a标签的四个伪类

    A标签的css样式   CSS为一些特殊效果准备了特定的工具,我们称之为“伪类”.其中有几项是我们经常用到的,下面我们就详细介绍一下经常用于定义链接样式的四个伪类,它们分别是: :link    :v ...

  8. 2018.09.25 bzoj2286: [Sdoi2011]消耗战(虚树+树形dp)

    传送门 又一道虚树入门题. 这个dp更简单啊. 直接记录每个点到1的距离,简单转移就行了. 代码: #include<bits/stdc++.h> #define N 250005 #de ...

  9. maven随笔

    1.在我们项目顶层的POM文件中,我们会看到dependencyManagement元素.通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号.Maven会沿着父子层次向上走, ...

  10. hadoop学习笔记(五):java api 操作hdfs

    HDFS的Java访问接口 1)org.apache.hadoop.fs.FileSystem 是一个通用的文件系统API,提供了不同文件系统的统一访问方式. 2)org.apache.hadoop. ...