Flask基础(09)-->请求勾子函数
什么是请求勾子?
为了让每个视图函数避免编写重复的功能代码,flask提供了通用设施的功能,就是所谓的勾子
那么请求勾子就是,在浏览器请求服务器资源的前后挂载相关的处理函数
请求勾子有什么作用?
作用:在浏览器请求服务器资源的前后挂载相关的处理函数
比如:1、浏览器请求资源之前,根据需求进行权限校验
2、请求结束之后,处理数据的交互格式......
如何使用请求勾子?
请求勾子是通过装饰器的形式实现,Flask支持如下四中请求勾子:
- before_first_request
在处理第一个请求前执行 - before_request
在每次请求前执行
如果在某修饰的函数中返回了一个相应,视图函数将不再被调用 - after_request
如果没有抛出错误,在每次请求后执行
接收一个参数:视图函数做出的响应,
在此函数中可以 对响应的值在返回之前做最后的一步修改处理
需要将参数中的响应在此参数中进行返回 - teardown_request
在每次请求后执行
接收一个参数:错误信息,如果有相关错误抛
总结:请求勾子类似于装饰器,可以在不修改函数内部的逻辑前提下增加逻辑.
from flask import Flask
app = Flask(__name__) class Config(object):
DEBUG = True app.config.from_object(Config) @app.before_first_request
def before_first_request():
"""第一次请求视图函数时才会调用"""
print("before_first_request") @app.before_request
def before_request():
"""每次请求视图函数之前会调用此函数"""
print("before_request") @app.after_request
def after_request(response):
"""在请求之后会调用,并且在函数里会接受一个参数:响应,并且还要将响应返回"""
print("after_request")
print(response)
# response可以得到视图函数返回的相关响应数据:<Response 14 bytes [200 OK]>
# 在此函数中可以对响应的数据做统一的处理
return response @app.teardown_request
def teardown_request(error):
"""在请求之后会执行,如果请求的函数有异常,会把具体的异常传递到此函数"""
print("teardown_request") @app.route('/')
def hello_world():
return 'Hello World!!!' if __name__ == '__main__':
app.run()
Flask基础(09)-->请求勾子函数的更多相关文章
- (三)flask中的请求钩子函数
请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图 ...
- flask基础之请求钩子(十二)
前言 什么是请求钩子?在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要统一处理,为了让每个视图函数避免编写重复功能的代码,flask提供了统一的接口可以添加这些处理函数,即请求钩子. 请求钩子 ...
- flask 文件下载 文件服务器 请求参数 函数修饰符
180M电子书 通过已经下载到pc,在上传到私有公网服务器,之后,再异地下载 以下代码,文件内容错乱 [root@bigdata-server- mydataweb]# tree . ├── mydl ...
- Flask基础(12)-->请求上下文和应用上下文
请求上下文和应用上下文 请求上下文:可以简单理解为客户端与服务器之间数据交互请求的容器 请求上下文对象有:request.Session request:封装了HTTP请求的内容,针对的是http的请 ...
- 测开之路三十一:Flask基础之请求与相应
from flask import requestrequest.pathrequest.methodrequest.formrequest.argsrequest.values 一般用form获取p ...
- flask中请求勾子
请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: *在请求开始时,建立数据库连接; *在请求开始时,根据需求进行权限校验; *在请求结束时,指定数据的交互格式; 为了让每 ...
- flask基础之AppContext应用上下文和RequestContext请求上下文(六)
前言 应用上下文和请求上下文存在的目的,官方文档讲的很清楚,可参考: http://www.pythondoc.com/flask/appcontext.html 应用上下文对象在没有请求的时候是可以 ...
- 第二篇 Flask基础篇之(闪现,蓝图,请求扩展,中间件)
本篇主要内容: 闪现 请求扩展 中间件 蓝图 写装饰器,常用 functools模块,帮助设置函数的元信息 import functools def wrapper(func): @functools ...
- Flask——基础知识
Flask应用程序 一个简单的Flask应用程序 # 导入flask程序 from flask import Flask # 初始化flask对象 app = Flask(__name__) # 装饰 ...
随机推荐
- 在.net core web项目中生成图片验证码
第1步:添加SkiaSharp包引用 Install-Package SkiaSharp 第2步:编写生成图片验证码的代码 using SkiaSharp; //在类文件头部添加引用 public I ...
- Linux的基本操作(一)
一.Linux的常用命令 1.ls[参数] 目录或文件 参数 -a :显示指定目录下的所有子目录与文件,包括隐藏文件: -l 以长格式显示文件的详细信息 如图: 文件类型:“-“表示常规文件:”d&q ...
- POJ-1860 Currency Exchange( Bellman_Ford, 正环 )
题目链接:http://poj.org/problem?id=1860 Description Several currency exchange points are working in our ...
- hdu 5903 Square Distance(dp)
Problem Description A string is called a square string if it can be obtained by concatenating two co ...
- yzoj1568: 数字组合 题解
题意 从n个数中选出和为m的组合个数(输入顺序不同的数是不同的) 输入样例: 4 4 1 1 2 2 输出样例 3 我们把每个数看作一件物品,它的重量就是它的值,价值就是1,而和m即为背包的容积,故背 ...
- linux中启动Zookeeper
1.先把zookeeper的安装包解压在/usr/local,如下: 2.进入zookeeper目录,创建一个data目录 3.进入同级conf目录下,里面有zoo_sample.cfg,修改该文件名 ...
- maven:Fatal error compiling: 无效的目标发行版: 1.8.0_45 -> [Help 1]
使用mvn clean install命令的时候出现如下的错误: Failed to execute goal org.apache.maven.plugins:maven-compiler-plug ...
- 一个例子明白 javascript 中 for 与 for in 的区别
var arr = new Array(); arr["a"] = "aa"; arr["b"] = "bb"; arr ...
- Winform中将Bitmap对象通过picture显示图片
场景 使用Zxing生成二维码时,返回的是Bitmap,现在要将其显示. Winform中显示照片的控件是pictureBox 实现 //二维码要存储的内容 string codeString = & ...
- 用button 属性来保存字符串地址
我用到for循环创建button 通过点击不同的按钮拿到每个button对应的链接地址,因为button的个数也是通过后台数据返回.上代码: //保存到数组 _array = [Article mj ...