1.请求钩子:在处理请求之前或之后的执行代码。
before_request:注册一个函数,在每次请求之前运行。
before_frist_request:注册一个函数,只在处理第一个请求之前运行。可以通过这个钩子添加服务器初始化任务
after_request:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
teardown_request:注册一个函数。即使有未处理的异常抛出,也在每次请求之后运行。
说明:在请求钩子函数和视图函数之间共享书记一般使用全局变量g.
2.响应:多数情况下,响应就是一个简单的字符串,作为HTML页面送回客户端。但是http协议需要的不仅是作为请求响应的字符串。还有一个重要部分是状态码,flask默认是200,表明请求已被成功处理,如果视图函数返回的响应需要不同的状态码,可以把数字代码作为第二返回之,添加到响应文本之后。
@app.route("/fris/<jiu>")
def fris(jiu):
return "<h1>fsajfksa<h1>",400
3.视图函数还可以返回的响应接受第三个参数。后面章节具体讲到
4.视图函数还可以返回一个响应对象。make_response()函数可以接受一个,两个,三个参数(和视图函数返回值一样)。有时还会在视图函数生成响应对象。
from flask import Flask,request,make_response
@app.route("/oner")
def oner():
response=make_response("<h1>fsajfksa<h1>")
response.set_cookie("ad","42")
return response
5.响应对象的属性或者方法:
status_code http状态码
headers 一个类似字典的对象,包含随响应发送的所有首部
set_cookie() 为响应添加一个cookie
delete_cookie() 删除一个cookie
content_length 响应主题的长度
content_type 响应主题的媒体类型
set_data() 使用字符串或者字节值设定响应
get_data() 获取响应主题
6.重定向,flask提供了redirect()辅助函数,用于生成这种函数
from flask import redirect
@app.route("/cdx")
def cdx():
return redirect("https://www.zhihu.com/")
7.还有一种特殊的响应由abort()函数生成,用于处理错误,在下面例子中如果url中的动态参数id对应的用户不存在就返回状态码404:
from flask import abort
@app.route("/yonghu/<id>")
def yonghu(id):
user=load_user(id)
if not user:
abort(404)
return "<h1>hello,{}</h1>".format(user.na