1、从Flask模块导入request
from flask import request
注意,如果需要将字典转为json串,还需要导入json模块
import json
2、定义视图函数支持的请求方法
@app.route("/req",methods=["POST"])
3、Flask request 属性
- 注意点:在使用request.form.get()获取内容的时候,可能会用到json.dumps():将python中的字典转换为json字符串
request.method 返回请求方法
request.args 返回get请求参数数据(key-value),主要是GET请求,请求参数在url中.也即请求链接中?后⾯的所有参数 #获取get请求的数据
request.args.get('a') 返回get请求url中参数a的值,数据来源是url地址 # 获取get请求指定的值
request.form 返回get请求form表单中的数据(key-value),原理跟request.args差不多,只是request.args数据来源是url,request.form的数据来源是表单 # 获取post请求的数据
request.form.get('username') 返回post请求表单中key为username的值,也即在html页面中定义的name对应的元素的输入值 # 获取post请求指定的值
request.form.getlist('serv') 在Flask中,getlist是request对象的一个方法,用于获取表单中同名字段的多个值,获取值方式同request.form.get() ,当表单中存在多个同名字段时(html中多个元素name值可以相同),使用getlist可以获取到所有的值,并返回一个列表。 #
request.cookies 返回cookies信息
request.cookies.get('') #返回某个具体的cookie值
request.headres 返回请求头信息
request.data 如果处理不了的数据就变成字符串存在data里面
request.files 返回上传或下载的文件信息
request.path 返回请求文件路径:/myapplication/page.html
request.base_url 返回域名与请求文件路径:http://www.baidu.com/myapplication/page.html
request.url 返回全部url:http://www.baidu.com/myapplication/page.html?id=1&edit=edit
request.url_root 返回域名:http://www.baidu.com/
最常用如下:
①request.args.get('a')
返回get请求的值,一般为url中参数a的值经过视图函数业务逻辑处理后的值,而参数值来源于表单中输入的数据,那么,先要获取在html页面中定义的元素的name值对应的输入值 ----前端需要给元素定义name,然后输入的内容通过name传给后端。
②request.form.get('username')
返回post请求中的值,返回表单key为username的值,一般为表单输入的数据经过视图函数业务逻辑处理后的值,那么,先要获取在html页面中定义的元素的name值对应的输入值----前端需要给元素定义name,然后输入的内容通过name传给后端。
4、示例
(1)POST请求视图函数
from flask import Flask, render_template,Blueprint,request
import json
form444 = Blueprint('formDis444', __name__)
#实例化蓝图对象
#两个必要参数':
# 第一个参数:蓝图名字,自定义'
# 第二个参数:__name__'蓝图所在的模块或者包,一般为'__name__'变量;
# 第三个参数:url_prefix,非必填,,表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由
@form444.route('/test6')#在蓝图对象上进行操作,路由
def fromtest6():
return render_template('order3.html')
@form444.route('/test7',methods=['GET','POST']) ##定义视图函数支持的请求方法
def formtest7():
if request.method == 'POST':
number55 = request.form.get('number5') #因为请求方法为post,因此使用request.form.get()方法,并且获取的值是字符串类型
number66 = request.form.get('number6') #因为请求方法为post,因此使用request.form.get()方法,并且获取的值是字符串类型
numberC = number55 + number66
return request.method
# return request.form
# return request.form['number5']
# return json.dumps(request.form)
# return str(request.headers)
# return request.headers.get('User-Agent')
# return request.url
# return request.path
# return request.base_url
# return request.url_root
(2)GET请求视图函数
from flask import Flask, render_template,Blueprint,request
import json
form555 = Blueprint('formDis555', __name__)
#实例化蓝图对象
#两个必要参数':
# 第一个参数:蓝图名字,自定义'
# 第二个参数:__name__'蓝图所在的模块或者包,一般为'__name__'变量;
# 第三个参数:url_prefix,非必填,,表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由
@form555.route('/test8')#在蓝图对象上进行操作,路由
def fromtest2():
return render_template('order4.html')
@form555.route('/test9',methods=['GET','POST']) #定义视图函数支持的请求方法
def formtest3():
if request.method == 'GET':
number77 = request.args.get('number7') #因为请求方法为get,因此使用request.args.get()方法,并且获取的值是字符串类型
number88 = request.args.get('number8') #因为请求方法为get,因此使用request.args.get()方法,并且获取的值是字符串类型
numberD = number77 + number88
# return request.args
# return request.args['number7']
return json.dumps(request.args)
返回值汇总如下: