一、request获取请求参数
request参数,顾名思义就是请求参数,request对象中保存了一次HTTP请求的一切信息。
Django中,request是必须传入视图函数的参数;但是在flask中的视图,不需要传入request参数,那是因为flask采用了request全局变量。
request常用属性如下:
属性 | 说明 | 类型 |
---|---|---|
data | 记录请求的数据,并转换为字符串 | · |
form | 记录请求中的表单数据 | MultiDict |
args | 记录请求中的查询参数 | MultiDict |
cookies | 记录请求中的cookie信息 | Dict |
headers | 记录请求中的报文头 | EnvironHeaders |
method | 记录请求使用的HTTP方法 | GET/POST |
url | 记录请求的URL地址 | string |
files | 记录请求上传的文件 | · |
1. request.data
当flask遇到不能处理的mimetype时,请求的数据就不能被其它方式正常解析,这些方式包括
- request.form
- request.json
- request.files
这几个常用的用来访问数据的属性。这时就把数据作为字符串存在request.data中。
注意:request.json需要application/json的mimetype类型。
- 例1:传入form表单数据,request.data为空的二进制字符串,解码后为空行
# 127.0.0.1:5000/index
@app.route("/index", methods=["GET", "POST"])
def index():
# request中包含了前端发送过来的所有数据
# form和data,查询请求体数据
name = request.form.get("name", "zhangsan")
age = request.form.get('age')
print(request.data) # 二进制的数据
print(request.data.decode('utf8')) # 需要解码成utf8
return "hello name=%s, age=%s" % (name, age, city)
用postman测试,传入表单数据类型时header为application/x-www-form-urlencoded,传入name和age值
输出为
b'' # 二进制的空字符
# 空行
2. request.form
如果minitype为:
- application/x-www-form-urlencoded
- multipart/form-data
也就是我们所谓表单提交,访问request.form会返回一个包含解析过的的表单对象的 MultiDict,里面是k-v组成的元组的列表,而request.data是空的。
获取的结果使用
- get
- getlist
- items
- keys
- to_dict
- update
- values
- fromkeys
等合适方法去除要获取的值进行处理
- 例2:传入表单数据,查看request.form
@app.route("/index", methods=["GET", "POST"])
def index():
# request中包含了前端发送过来的所有数据
# 通过request.form可以直接提取请求体中表单格式的数据,是一个类
name = request.form.get("name", "zhangsan")
age = request.form.get('age')
print(request.form)
return "hello name=%s, age=%s " % (name, age)
输出
ImmutableMultiDict([('name', '林璇'), ('age', '29')])
3. request.args
获取get请求参数
4. request.files
前端提交的文件,需要使用这个属性获取,暂时用的方法
- get
- getlist
- items
- keys
获取到的是一个文件对象。
网友评论