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 相关文章推荐
Django小白教程之Django用户注册与登录
Apr 22 Python
Tornado 多进程实现分析详解
Jan 12 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
python with (as)语句实例详解
Feb 04 Python
Python tkinter布局与按钮间距设置方式
Mar 04 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
Django实现内容缓存实例方法
Jun 30 Python
python右对齐的实例方法
Jul 05 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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文件操作的详解
2013/06/05 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP读取Excel类文件
2017/05/15 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
python 识别图片中的文字信息方法
2018/05/10 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
shell程序中如何注释
2012/01/28 面试题
师德个人剖析材料
2014/02/02 职场文书
森林防火工作方案
2014/02/14 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
2014年师德承诺书
2014/05/23 职场文书
2014年生产部工作总结
2014/12/17 职场文书
nginx rewrite功能使用场景分析
2022/05/30 Servers