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实现自动登录人人网并访问最近来访者实例
Sep 26 Python
python正则表达式match和search用法实例
Mar 26 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
java中两个byte数组实现合并的示例
May 09 Python
pandas重新生成索引的方法
Nov 06 Python
详解python中groupby函数通俗易懂
May 14 Python
Python绘制组合图的示例
Sep 18 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 Python
python温度转换华氏温度实现代码
Dec 06 Python
python Scrapy框架原理解析
Jan 04 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 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 tp验证表单与自动填充函数代码
2012/02/22 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php简单复制文件的方法
2016/05/09 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Django 用户认证组件使用详解
2019/07/23 Python
Django缓存系统实现过程解析
2019/08/02 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
会计职业生涯规划书
2014/01/13 职场文书
新年团拜会主持词
2014/04/02 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
win10清理dns缓存
2022/04/19 数码科技