flask中request的一些方法

  • 首先from flask import request

1.request.path

2.request.host

3.request.host_url

from flask import Flask, request

app = Flask(__name__)
@app.route('/')
def index():
print(request.path) #/
print(request.host) #127.0.0.1:5000
print(request.host_url) #http://127.0.0.1:5000/
return 'hello'
if __name__ == '__main__':
app.run(debug=True)

4.request.method   获取请求方式

from flask import Flask, request

app = Flask(__name__)
@app.route('/')
def index():
print(request.method) #GET
if request.method=="GET":
print('use GET method') #use GET method
return 'hello'
if __name__ == '__main__':
app.run(debug=True)

5.request.args         获取url参数

  • 获取字典的key值有两种方法,分别是索引['id']和get方法,如果索引的value值错误会出现一个keyerro的错误,如果是get的value的值错误会是None
  • request.args.get('id')   #拿到url单独的一个参数
  • request.args.to_dict()  #得到一个字典
  • request.args.to_dict().get('id') #字典通过get方法获取值
  • request.args.to_dict()['id']  #字典通过索引获取值
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
#获取url中的参数,比如url为http://127.0.0.1:5000/?id=1&name=2,通过request.args得到一个
#类似于字典的元组ImmutableMultiDict([('id', '1'), ('name', '2')])
print(request.args) #ImmutableMultiDict([('id', '1'), ('name', '2')])
print(request.args.get('id')) #拿到了id的值1
print(request.args.get('name')) #拿到了name的值2
arg=request.args.to_dict()
print(arg) #拿到了一个字典{'id': '1', 'name': '2'}
print(arg['id']) #通过索引拿到了id的值1
print(arg.get('id')) #通过get方法拿到了id的值1
return 'hello'
if __name__ == '__main__':
app.run(debug=True)

6.request.form          获取FormData 数据

  • request.form.to_dict()   #获取一个登陆信息的字典

7.request.files            接收FormData中的文件

  • request.files.to_dict() #生成一个字典
  • request.file.get('文件名')  # 通过文件名获取文件
  • request.file.get('文件名').save(file.filename) #通过文件名获取文件之后以原文件名保存到当前目录下
  • request.file.get('文件名').save('新文件名') #通过文件名获取文件之后以新文件名保存到当前目录下
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/login',methods=['POST','GET']) #如果出现状态码405是因为没有加上methods方法
def login():
if request.method=="GET":
return render_template('login2.html')
else:
print(request.form)#获得ImmutableMultiDict([('username', '123')])
print(request.form.to_dict())#获得一个字典{'username': '123'}
print(request.files)#获取ImmutableMultiDict([('my_file', <FileStorage: '1.jpg' ('image/jpeg')>)])
print(request.files.to_dict())#获取字典{'my_file': <FileStorage: '1.jpg' ('image/jpeg')>}
print(request.files.get('my_file'))#获取key值<FileStorage: '1.jpg' ('image/jpeg')>
file=request.files.get('my_file')
file.save(file.filename) #保存文件到目录下
return '登录成功'
if __name__ == '__main__':
app.run(debug=True)
//login.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method ='post' enctype="multipart/form-data">#enctype="multipart/form-data
<input type="text" name="username">#输入框
<input type="file" name="my_file"> #提交文件的选择框
<input type="submit" value="提交">#按钮
</form>
</body>
</html>

 

8.request.json          请求头 带有Content-Type:application/json   请求体中的数据自动序列化至此,生成一个字典,而且在data中依然

           存储着以byte形式的原始数据
9.request.data           获取请求体中的原始数据   是一个字节流b"”

10request.values       这个是获取args+form  慎用,有坑

flask基础---第三篇的更多相关文章

  1. NHibernate 映射基础(第三篇) 简单映射、联合主键

    NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...

  2. Python基础第三篇

    一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='aba ...

  3. Python【基础第三篇】

    set集合 s1=set() 集合特点: 访问速度快 没有重复项 collections系列(数据类型容器模块) 一.计数器(Counter) Counter是对字典类型的补充,用于追踪值的出现次数. ...

  4. Django基础第三篇

    一.ORM操作 1.常用字段和参数 Autofied 自增的整形字段,必填参数primary_key=True,  则成为数据库的主键,如无该字段,django自动创建 IntegerField 一个 ...

  5. bootstrap基础学习三篇

    bootstrap的排版 1.标题 Bootstrap 中定义了所有的 HTML 标题(h1 到 h6)的样式 2.代码如下: <div class="container"& ...

  6. python基础-第三篇-函数编程

    基本数据类型之set set是无序不允许重复的集合 set创建:s = set() 创建空集合  s = {11,22,33} 转换s = set(可迭代数据) li = [11,22,33,44] ...

  7. java基础第三篇

    6.Java 中的容器(重点) a.变量:变量是一个容器,它存储的单个值 //int i=3; 1.局部变量:定义在方法中,没有默认值 2.成员变量:定义在类中方法外,这个事物的属性(特征)定义为成员 ...

  8. Java笔记(基础第三篇)

    面向对象的特点: 封装 继承 多态 类的构造方法 如果在类中定义的构造方法都不是无参的构造方法,则编译器不会为类设置一个默认的无参构造方法,当视图调用无参构造方法实例化一个对象时,编译器会报错,所以只 ...

  9. 第三篇 Flask 中的 request

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

随机推荐

  1. hadoop(原生及CDH发行版)关键目录、配置文件及服务对应文件名详解

    四个最主要的配置文件(原生版本位于$HADOOP_HOME\etc\hadoop目录):mapred-site.xmlcore-site.xmlhdfs-site.xmlyarn-site.xml 在 ...

  2. 分布式事物(同样适用于dubbo事务等分布式事务)

  3. MemoryStream生成Excel

    public static MemoryStream ToExcel<T>(List<T> list, string filePath = null) { var memory ...

  4. Tomcat配置文件入门

    转自:http://blog.csdn.net/jubincn/article/details/4856293 Tomcat 基本配置 tomcat读取配置文件 首先简单说一下tomcat是如何读取配 ...

  5. Visual Studio 2017 和 Visual Assist X 番茄助手的安装教程

    声明:本文所提供的所有软件均来自于互联网,仅供个人研究和学习使用,请勿用于商业用途,下载后请于24小时内删除,请支持正版! 一.Visual Studio 2017的安装教程 Visual Studi ...

  6. 【Git】Git使用记录: remove *.lock eg: index.lock/head.lock

    问题 Another git process seems to be running in this repository, e.g. an editor opened by 'git commit' ...

  7. Best Practices for Assembly Loading

    原文链接 This article discusses ways to avoid problems of type identity that can lead to InvalidCastExce ...

  8. idea工具和激活码获取

    1.下载最新的idea https://blog.csdn.net/mashuai720/article/details/79389314 2.获取激活码 最后一个有效,亲测 https://blog ...

  9. 防cc攻击策略

    黑客攻击你的网站,会采取各种各样的手段,其中为了降低你网站的访问速度,甚至让你的服务器瘫痪,它会不断的刷新你的网站,或者模拟很多用户同一时间大量的访问你的网站, 这就是所谓的CC攻击,这就需要我们在程 ...

  10. Demo整合

    1.图片上传:  https://github.com/842549829/WebUploader 2.百度编辑器: https://github.com/842549829/Ueditor 3.安卓 ...