一、前言
参考 https://www.cnblogs.com/poloyy/p/14995215.html
1、Flask 中很重要的 request 对象
- 浏览器访问服务端时,向服务端发送请求
- Flask 程序使用 request 对象描述请求信息
- 当你想获取请求体、请求参数、请求头数据的时候,就需要靠 request 对象了
2、真实使用场景
浏览器访问服务端,需要将相应的数据发送给服务端,可能有如下场景:
- 通过 URL 参数进行查询,浏览器需要将查询参数发送给服务端
- 提交表单 form 进行查询,浏览器需要将表单 form 中的字段发送给服务端
- 上传文件,浏览器需要将文件发送给服务端
- 通过 JSON 格式的请求体进行请求,一般是 post 请求
服务端收到将客户端发送的数据后,封装形成一个请求对象,在 Flask 中,请求对象是一个模块变量 flask.request
form、args、values、json 都是获取 http 请求的请求数据的属性,只不过请求体类型不同
二、获取url请求参数的例子
1、完整代码
from flask import Flask, request app = Flask(__name__) @app.route('/query') def query(): return {"name":request.args['name'],"age":request.args['age']} @app.route('/query2') def query2(): print('args=',request.args) print('form=',request.form) return 'form' @app.route('/query3') def query3(): print('args=',request.args) print('json=',request.json) return 'json' @app.route('/query4') def query4(): return {"name":request.values['name'],"age":request.values['age']} if __name__ == '__main__': app.run(debug = True)
2、请求结果
1)/query
query后面可以随意拼接任何参数,代码中只写了获取返回参数=name和age的值
2)/query2
用 form 属性的话得到是一个空字典哦,控制台输出结果如下:
3)/query3
用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 url 请求参数哟!控制台输出结果如下:
4)/query4
可以看到 values 属性也能拿到 url 请求参数哦
三、获取表单参数的例子
1、完整代码
from flask import Flask, request app = Flask(__name__) @app.route('/addUser',methods=['POST']) def check_login(): return {"name:":request.form['name'],"age":request.form['age']} @app.route('/addUser2',methods=['POST']) def check_login2(): print('form=',request.form) print('args=',request.args) return "form" @app.route('/addUser3',methods=['POST']) def check_login3(): print('form=',request.form) print('json=',request.json) return "json" @app.route('/addUser4',methods=['POST']) def check_login4(): return {"name":request.values['name'],"age":request.values['age']} if __name__ == '__main__': app.run(debug = True)
2、请求结果
1)addUser
2)addUser2
用 args 属性的话得到是一个空字典哦,控制输出结果如下:
3)addUser3
用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 form-data 哟!控制台输出结果如下:
4)addUser4
可以看到 values 属性也能拿到 form 表单提交的数据哦
四、获取json数据的例子
1、完整代码
from flask import Flask, request app = Flask(__name__) @app.route('/addJson',methods=['POST']) def check_login(): return {"name:":request.json['name'],"age":request.json['age']} @app.route('/addJson2',methods=['POST']) def check_login2(): print('json=',request.json) print('args=',request.args) return "json" @app.route('/addJson3',methods=['POST']) def check_login3(): print('json=',request.josn) print('form=',request.form) return "json" @app.route('/addJson4',methods=['POST']) def check_login4(): print('json=',request.json,type(request.json)) print('values=',request.values) return {"name":request.json['name'],"age":request.json['age']} if __name__ == '__main__': app.run(debug = True)
2、请求结果
1)addJson
2)addJson2
用 args 属性的话得到是一个空字典哦 ,控制台输出结果如下:
3)addJson3
用 form 属性的话得到是一个空字典哦 ,控制台输出结果如下:
4)addJson4
当你的请求体是 Json 时,是不能通过 values 来获取请求数据哦!!request.json 拿到的就是 Json 格式的请求体,并且自动转换成字典了哦!控制台输出结果如下:
标签:__,name,form,Flask,app,request,对象,json From: https://www.cnblogs.com/Chilam007/p/16999310.html