请求对象request

导入请求对象,通过method属性控制当前请求方法

  1. from flask import request
  2. @app.route("/login",methods=["POST", "GET"])
  3. def login():
  4. if reqeust.method == "POST":
  5. ...
  6. else:
  7. ...
  8. return ...

处理表单数据

  1. request.form.get("username")

处理请求参数

  1. request.args.get("name")

属性get_data

  1. # 将请求参数解析为字符串,as_text设置为True,返回值将是一个解码后的字符串
  2. @app.route(...)
  3. def test():
  4. request_data = request.get_data(as_text=False)
  5. ...

属性get_json

  1. # 将请求参数解析为JSON
  2. @app.route(...)
  3. def test():
  4. request_data = request.get_json()
  5. ...

更多见: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 是一个由额外头部值组成的列表 或字典

  1. from flask import render_template, make_response
  2. @app.route("/")
  3. def index():
  4. user = User.query.first() # 读取用户记录
  5. movies = Movie.query.all() # 读取所有电影记录
  6. resp = make_response(render_template("index.html", user=user, movies=movies), 404)
  7. resp.headers["x-Something"] = "S value"
  8. return resp

jsonify

将数据序列化为 JSON flask视图如果返回一个dict,会被自动转为json响应,如无法满足需求,可通过jsonify将数据序列化

  1. from flask import jsonify
  2. @app.route("/")
  3. def index():
  4. return jsonify(
  5. username="wangshunzhe",
  6. email="wangshunzhe@qq.com"
  7. )