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的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
python 输出所有大小写字母的方法
Jan 02 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
django删除表重建的实现方法
Aug 28 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
Django认证系统user对象实现过程解析
Mar 02 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
Django静态资源部署404问题解决方案
May 11 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
Python grpc超时机制代码示例
Sep 14 Python
python 实现简易的记事本
Nov 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 UTF8中文字符截断函数代码
2012/09/11 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
sina的lightbox效果。
2007/01/09 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python异常处理和日志处理方式
2019/12/24 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
Python页面加载的等待方式总结
2021/02/28 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
《我的第一本书》教学反思
2014/02/15 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
公司停电通知
2015/04/15 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL