这节是flask-视图函数及路由模块的最后一个章节,下一节将开始记录flask-模块相关的知识。
请求钩子的作用
请求钩子是通过装饰器的形式实现的,其目的就是避免写重复的代码.
在客户端和服务器交互的过程中,做些准备工作和扫尾工作.
flask中有哪些装饰器
-
before_first_request
-
before_request
-
after_request
-
teardown_request
请求钩子该如何使用
before_first_request
-
处理第一个请求前执行
-
只执行一次
-
不能拦截第一次请求的执行
写一个实例,来看下before_first_request,该怎么用
可以看到before_first_request只执行一次,且在第一个请求前进行执行,我们分析下它在浏览器中的执行过程
before_request
-
在每次请求前都执行
-
对应的函数如果返回一个响应,视图函数不被调用
写一个实例来看下before_request怎么用
可以看到它每次都会执行,如果返回响应,函数就不被调用了
基于这个特性,我们是不是可以在对应的函数中,在请求开始之前,做一些处理。
比如典型的需求,对一些非法的请求进行拦截.我们可以在before_request请求钩子对应的函数中,写个if语句判断ip是否在黑名单里,如果在直接返回提示信息
after_request
-
必须接收一个response对象
-
必须返回一个response对象
-
对应的函数中可以对response对象进行处理
写一个实例来看下after_request怎么用,发现页面报错了
看样子是缺少一个参数,我们查询源码看下
原来忘记接收和返回response返回对象了,我们加入看下,是不是可以了
teardown_request
-
每次请求执行之后
-
必须接收一个error对象
-
如果请求异常,对应的函数可捕获具体异常
写一个实例来看下teardown_request怎么用,发现页面又报错了
看样子,还是缺少一个参数,我们继续看下源码要求的参数
原来必须接收一个error对象,我们添加参数,发现已经成功了
请求钩子在项目中有很大的用处,这里只是一些简单的入门操作,后续在项目中可以具体应用