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爬虫之正则表达式
Feb 17 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
django的settings中设置中文支持的实现
Apr 28 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
python3 深浅copy对比详解
Aug 12 Python
520使用Python实现“我爱你”表白
May 20 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 Python
python scipy 稀疏矩阵的使用说明
May 26 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安全性问题中的:Null 字符问题
2013/06/21 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php检测文件编码的方法示例
2014/04/25 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
twig模板常用语句实例小结
2016/02/04 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
Python编程把二叉树打印成多行代码
2018/01/04 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
详解python之heapq模块及排序操作
2019/04/04 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
公司贷款承诺书
2014/05/30 职场文书
班级文化标语
2014/06/23 职场文书
银行授权委托书格式
2014/10/10 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang