请求对象request
导入请求对象,通过method属性控制当前请求方法
from flask import request
@app.route("/login",methods=["POST", "GET"])
def login():
if reqeust.method == "POST":
...
else:
...
return ...
处理表单数据
request.form.get("username")
处理请求参数
request.args.get("name")
属性get_data
# 将请求参数解析为字符串,as_text设置为True,返回值将是一个解码后的字符串
@app.route(...)
def test():
request_data = request.get_data(as_text=False)
...
属性get_json
# 将请求参数解析为JSON
@app.route(...)
def test():
request_data = request.get_json()
...
更多见:https://dormousehole.readthedocs.io/en/latest/api.html#flask.Request
make_response
在视图内控制响应对象的结果
1、如果视图返回的是一个响应对象,那么就直接返回它。 2、如果返回的是一个字符串,那么根据这个字符串和缺省参数生成一个用于返回的 响应对象。 3、如果返回的是一个字典,那么调用 jsonify 创建一个响应对象。 4、如果返回的是一个元组,那么元组中的项目可以提供额外的信息。元组中必须至少 包含一个项目,且项目应当由 (response, status) 、 (response, headers) 或者 (response, status, headers) 组成。 status 的值会重载状态代码, headers 是一个由额外头部值组成的列表 或字典
from flask import render_template, make_response
@app.route("/")
def index():
user = User.query.first() # 读取用户记录
movies = Movie.query.all() # 读取所有电影记录
resp = make_response(render_template("index.html", user=user, movies=movies), 404)
resp.headers["x-Something"] = "S value"
return resp
jsonify
将数据序列化为 JSON flask视图如果返回一个dict,会被自动转为json响应,如无法满足需求,可通过jsonify将数据序列化
from flask import jsonify
@app.route("/")
def index():
return jsonify(
username="wangshunzhe",
email="wangshunzhe@qq.com"
)