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__) # 装饰 ...
随机推荐
- effective java 3th item2:考虑 builder 模式,当构造器参数过多的时候
yiaz 读书笔记,翻译于 effective java 3th 英文版,可能有些地方有错误.欢迎指正. 静态工厂方法和构造器都有一个限制:当有许多参数的时候,它们不能很好的扩展. 比如试想下如下场景 ...
- HDU 4289 Control 最小割
Control 题意:有一个犯罪集团要贩卖大规模杀伤武器,从s城运输到t城,现在你是一个特殊部门的长官,可以在城市中布置眼线,但是布施眼线需要花钱,现在问至少要花费多少能使得你及时阻止他们的运输. 题 ...
- Atcode B - Colorful Hats(思维)
题目链接:http://agc016.contest.atcoder.jp/tasks/agc016_b 题解:挺有意思的题目主要还是模拟出最多有几种不可能的情况,要知道ai的差距不能超过1这个想想就 ...
- POJ3233 Matrix Power Series 矩阵快速幂 矩阵中的矩阵
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 27277 Accepted: ...
- 《Ansible自动化运维:技术与佳实践》第一章读书笔记
Ansible 架构及特点 第一章主要讲的是 Ansible 架构及特点,主要包含以下内容: Ansible 软件 Ansible 架构模式 Ansible 特性 Ansible 软件 Ansible ...
- jQuery - 02. 样式表属性操作/类操作、动画、显示隐藏、滑入、淡入、停止动画、节点操作、添加对象、清空节点
样式表属性操作.css $("div").css({'width':100,'height':100,'background':'red'}); $("div" ...
- Python 的整数与 Numpy 的数据溢出
某位 A 同学发了我一张截图,问为何结果中出现了负数? 看了图,我第一感觉就是数据溢出了.数据超出能表示的最大值,就会出现奇奇怪怪的结果. 然后,他继续发了张图,内容是 print(100000*20 ...
- 大型公司java架构师面试实战讲解高清视频教程 15课
目录: 01.面试必考之HashMap源码分析与实现02.探索JVM底层奥秘ClassLoader源码分析与案例讲解03.大型网站数据库瓶颈之数据库分库分表方案实践04.资料为图灵学院所有05.大型公 ...
- 前端项目自动化构建工具——Webpack入门教程
参考资料:https://www.webpackjs.com/(中文文档) https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置 ...
- netcore 基于 DispatchProxy 实现一个简单Rpc远程调用
前言 netcore 发布以来,一直很关注netcore的进程.目前在公司负责的网站也历经波折的全部有.net framework 4.0 全部切换到netcore 2.2 版本中.虽然过程遇到的坑不 ...