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抓取网页中的图片示例
Feb 28 Python
selenium+python实现自动登录脚本
Apr 22 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
python实现函数极小值
Jul 10 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Python3安装pip工具的详细步骤
Oct 14 Python
python实现画循环圆
Nov 23 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python字典的值可以修改吗
Jun 29 Python
详解Python yaml模块
Sep 23 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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注入实例
2006/10/09 PHP
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
Javascript实现关闭广告效果
2021/01/29 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python使用mysql数据库示例代码
2017/05/21 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
详解如何设置Python环境变量?
2019/05/13 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
解决Python二维数组赋值问题
2019/11/28 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技