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 相关文章推荐
天翼开放平台免费短信验证码接口使用实例
Dec 18 Python
python抓取网页中的图片示例
Feb 28 Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
如何将python中的List转化成dictionary
Aug 15 Python
python 自动去除空行的实例
Jul 24 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
python+OpenCV实现图像拼接
Mar 05 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
PHP:风雨欲来 路在何方?
2006/10/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python显示进度条的方法
2014/09/20 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
Java程序员面试题
2013/07/15 面试题
大学生咖啡店创业计划书
2014/01/21 职场文书
银行批评与自我批评
2014/02/10 职场文书
幼儿教师培训感言
2014/03/08 职场文书
绿色环保演讲稿
2014/05/10 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
反邪教学习心得体会
2016/01/15 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript