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 SDK写一个同步脚本及使用教程
Aug 23 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
PyTorch 对应点相乘、矩阵相乘实例
Dec 27 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
Django实现后台上传并显示图片功能
May 29 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中对数据库操作的封装
2006/10/09 PHP
PHP 批量更新网页内容实现代码
2010/01/05 PHP
php 安全过滤函数代码
2011/05/07 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python fabric使用笔记
2015/05/09 Python
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
python turtle 绘制太极图的实例
2019/12/18 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
推广普通话标语
2014/06/27 职场文书
北京故宫导游词
2015/01/31 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python