1、Flask 设置个性化的响应体、响应头、状态码
flask 设置个性化的响应体、响应头、状态码 有两种方式
- 使用return直接设置特定的响应信息
- 使用
make_response
设置特定的响应信息
1.1、使用return直接设置特定的响应信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from flask import Flask
app = Flask(import_name=__name__)
@app.route("/login", methods=["GET","POST"]) def login(): """ return 响应体, 状态码status, 响应头 # 等价于 return (响应体, 状态码status, 响应头) # 响应体 返回到页面的内容,自己定义 # status 值可以是一个数字类型的值,也可以是一个字符串,字符串表示自定义信息:"状态码 自定义的信息", 例如下面的401,可以改成自定义的状态码:"666 custom info" # headers 可以是列表或字典,作为额外的消息标头值。 """ return "login fail", 401, [("header1", "123456")]
if __name__ == "__main__": app.run(debug=True)
|
1.2、使用 make_response
设置特定的响应信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| from flask import Flask, make_response
app = Flask(import_name=__name__)
@app.route("/login", methods=["GET","POST"]) def login():
res = make_response("login fail") res.status = "401 login fail" res.headers["header1"] = "123456"
return res
if __name__ == "__main__": app.run(debug=True)
|
2、其他响应方式
2.1、响应返回模版
1 2 3 4 5 6 7 8 9 10 11 12 13
| from flask import Flask,render_template
app = Flask(__name__)
@app.route("/") def hello(): return render_template("index.html") if __name__ == "__main__": app.run()
|
2.2、重定向
1 2 3 4 5 6 7 8 9 10 11 12
| from flask import Flask,render_template,redirect
app = Flask(__name__)
@app.route("/") def hello(): return redirect("http://baidu.com") if __name__ == "__main__": app.run()
|
2.3、json
使用jsonify方法,不仅会把数据转成json字符串,还会把响应的类型改为application/json;参数为python的数据类型,例如字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from flask import Flask,jsonify
app = Flask(__name__)
@app.route("/") def hello(): s = {"id":"123456"} return jsonify(s) if __name__ == "__main__": app.run()
|
2.4、abort(403)
- 里面可以指定http状态码,但必须是存在的状态码,不然会报错,使用状态码会跳转到状态码页面
- 可以自定义信息返回给前端页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from flask import Flask, abort, Response
app = Flask(__name__)
@app.route("/login",methods=["GET"]) def login(): return abort(400) resp = Response("login failed") return abort(resp)
if __name__ == "__main__": app.run(debug=True)
|