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实现电子词典
Apr 23 Python
python显示生日是星期几的方法
May 27 Python
浅谈Python 对象内存占用
Jul 15 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
简单易懂的python环境安装教程
Jul 13 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
详解Python是如何实现issubclass的
Jul 24 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Python使用Kubernetes API访问集群
May 30 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发送邮件类代码附详细说明
2008/07/10 PHP
PHP 类型转换函数intval
2009/06/20 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
浅谈php冒泡排序
2014/12/30 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
JS高级运动实例分析
2016/12/20 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
python中split方法用法分析
2015/04/17 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
英语生日邀请函
2014/01/23 职场文书
知识竞赛活动方案
2014/02/18 职场文书
新年晚会开场白
2015/05/29 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
python双向链表实例详解
2022/05/25 Python