0%

flask获取表单数据

[TOC]

当用户提交表单后,在flask中可以使用request获取用户提交的表单。

接下来详解几个函数。

reuqest.method

1
request.method #返回前端提交的方式,比如GET,POST等

reuqest.form

1
2
3
4
5
request.form #返回form表单中传来的值,类型:ImmutableMultiDict

#可以使用字典的方法来操作
#这里补充一下python字典的操作
dict.get(key, value)#可以返回第二个参数作为默认值

reuqest.args

1
2
3
4
5
6
7
8
9
reuqest.args #其中保存的是URL中的参数

#例如:localhost:5000/req?name=Lily&age=18
对于:
from flask import request
@app.route("/req", methods=["POST", "GET"])
def req():
print(request.args)#输出ImmutableMultiDict([('name', 'Lily'), ('age', '18')]),依然可以使用对字典的操作
return "ok"

request.form与request.args的区别在于:前者保存表单中的参数,后者保存URL中的参数

request.values

1
2
3
4
5
6
7
8
9
10
11
12
request.values #同时保存表单与URL中的参数

print(request.values)
# CombinedMultiDict([ImmutableMultiDict([('id', '1'), ('age', '20')]), ImmutableMultiDict([('user', 'Oldboy'), ('pwd', 'DragonFire')])])

print(request.values.get("id")) # 1
print(request.values["user"]) # Oldboy

#直接转为字典形式
print(request.values.to_dict()) # {'user': 'Oldboy', 'pwd': 'DragonFire', 'id': '1', 'age': '20'}

# 如果url和form中的Key重名的话,form中的同名的key中value会被url中的value覆盖

request.coolies和request.headers

1
2
request.cookies #不多BB
request.headers

request.data

首先补充一个知识点:

reuqest是基于MIME处理的

MIME(Multipurpose Internet Mail Extensions):描述消息内容类型的因特网标准。

若不属于MIME的范畴,那么request就会将无法处理的参数转为json存入data中

一个获取参数的办法:

1
req_data = json.loads(request.data)

request.files

1
2
3
4
<form action="/req" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>
1
2
3
4
print(request.files)  # ImmutableMultiDict([('file', <FileStorage: 'DragonFire.txt' ('text/plain')>)])
print(request.files["file"]) # <FileStorage: 'DragonFire.txt' ('text/plain')>
my_file = request.files["file"]
my_file.save("OldBoyEDU.txt") # 保存文件,里面可以写完整路径+文件名