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中用PIL库批量给图片加上序号的教程
May 06 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
windows 下python+numpy安装实用教程
Dec 23 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
Python实现注册、登录小程序功能
Sep 21 Python
django项目搭建与Session使用详解
Oct 10 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
python实现126邮箱发送邮件
May 20 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
基于mysql的论坛(7)
2006/10/09 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
一些常用的Javascript函数
2006/12/22 Javascript
js+css在交互上的应用
2010/07/18 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
python中文件变化监控示例(watchdog)
2017/10/16 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
在python中使用nohup命令说明
2020/04/16 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
GWebs公司笔试题
2012/05/04 面试题
就业推荐自我鉴定
2013/10/06 职场文书
见习期自我鉴定
2013/11/07 职场文书
商务会议邀请函
2014/01/09 职场文书
小学生环保演讲稿
2014/04/25 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
稽核岗位职责
2015/02/10 职场文书
小程序自定义轮播图圆点组件
2022/06/25 Javascript