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实现修改IE注册表功能示例
May 10 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python读取word 中指定位置的表格及表格数据
Oct 23 Python
通过实例解析python描述符原理作用
Jan 22 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
在python中求分布函数相关的包实例
Apr 15 Python
Python如何实现的二分查找算法
May 27 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
举例讲解Python装饰器
Dec 24 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 explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
django反向解析和正向解析的方式
2018/06/05 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python之array赋值技巧分享
2019/11/28 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
python 模块导入问题汇总
2021/02/01 Python
python推导式的使用方法实例
2021/02/28 Python
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
大学生毕业的自我鉴定
2013/11/13 职场文书
医学检验专业大学生求职信
2013/11/18 职场文书
财务部经理岗位职责
2014/02/03 职场文书
初中英语课后反思
2014/04/25 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
主题团日活动总结
2014/06/25 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
个人自我剖析材料
2014/09/30 职场文书
电影雨中的树观后感
2015/06/15 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫