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中Random和Math模块学习笔记
May 18 Python
python通过ssh-powershell监控windows的方法
Jun 02 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
python将一组数分成每3个一组的实例
Nov 14 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
python 输出列表元素实例(以空格/逗号为分隔符)
Dec 25 Python
Python3标准库之dbm UNIX键-值数据库问题
Mar 24 Python
Python能做什么
Jun 02 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
nodejs 如何手动实现服务器
2018/08/20 NodeJs
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
Python实现的递归神经网络简单示例
2017/08/11 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
python实现转圈打印矩阵
2019/03/02 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
架构师岗位职责
2013/11/18 职场文书
英语专业学生的自我评价
2013/12/30 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
企业形象策划方案
2014/05/29 职场文书
死亡证明书样本说明
2014/10/18 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
汽车销售合同文本
2019/08/08 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python