Flask框架钩子函数功能与用法分析


Posted in Python onAugust 02, 2019

本文实例讲述了Flask框架钩子函数功能与用法。分享给大家供大家参考,具体如下:

在Flask中钩子函数是使用特定的装饰器的函数。为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数。

  • before_first_request:Flask项目第一次部署后会执行的钩子函数。
  • before_request:请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用。一般这个就是在函数之前,我们可以把一些后面需要用到的数据先处理好,方便视图函数使用。

before_request

@app.before_first_request
def first_request():
  print('只有在处理第一次请求之前执行')
@app.before_request
def before_request():
  print('在视图函数执行之前执行')

context_rocessor

只用这个钩子函数,必须返回一个字典。这个字典的值在所有模板中都可以使用。这个钩子函数的作用是,如果一些在很多模板中都要用到的变量,那么就可以使用这个钩子函数来返回,而不是在每个视图函数汇总的render_template中去写,这样可以让代码更加简洁和好维护。

@app.context_processor
def context_processor():
  return {{'current_user':'xxx'}}

errorhandler

在发生异常的时候,比如404,500错误,自定义错误的页面,在errorhangdler装饰的钩子函数下:

1. 要返回状态码

2. 必须写一个参数,来接受错误的信息

使用flask.abort可以手动的抛出相应的错误,比如开发者发现参数不正确的时候可以手动的抛出一个404错误。

@app.errorhandler(500)
def server_error(error):
  return render_template('500.html'),500
@app.errorhandler(404)
def page_not_found(error):
  return render_template('404.html'),404

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
深入理解Python变量与常量
Jun 02 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
python设定并获取socket超时时间的方法
Jan 12 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 Python
Python数据持久化存储实现方法分析
Dec 21 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
python两个list[]相加的实现方法
Sep 23 Python
Python的信号库Blinker用法详解
Dec 31 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 #Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 #Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 #Python
pandas DataFrame创建方法的方式
Aug 02 #Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 #Python
Django缓存系统实现过程解析
Aug 02 #Python
tensor和numpy的互相转换的实现示例
Aug 02 #Python
You might like
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Python多线程的退出控制实现
2020/08/10 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
统计员岗位职责
2015/02/11 职场文书
地道战观后感500字
2015/06/04 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技