Flask中的常见钩子函数介绍

Flask常用钩子函数基本使用

在flask中钩子函数是指用于处理特定情况所给出的装饰器


import logging
from datetime import datetime

from flask import render_template

from project.version1 import version1

'''
# 钩子函数包括以下几种
1.[app_]templater_filter(filtername): 自定义过滤器
2.before_[app_]first_request: 处理第一次响应是调用
3.before_[app_]request: 在请求前调用
4.teardown_app_request(f): 无论是否有异常都会在请求之后执行
5.context_processor: 上下文处理器,返回字典,为全局上下文,类似django的全局上下文
6.errorhandler(code): 接收错误状态码时调用,可返回自定义'404.html'等页面来处理异常,函数应具备'error'关键字参数.
    例:
    @app.errorhandler(404)
    def error_deal(error):
        return render_templater('404.html'), 404
注: 当蓝图调用钩子函数时应加上'app_'
'''
# 这里的例子以蓝图'version1'为例
# 自定义过滤器(value)参数必填
@version1.app_template_filter('deffilter')
def deffilter(value):
    return 'this is a define filter'


@version1.app_template_filter('time')
def get_time(value):
    formatter = '%H:%M:%S'
    value = value.strftime(formatter)
    return value


@version1.app_template_filter('day')
def get_day(value):
    formatter = '%y-%m-%d'
    value = value.strftime(formatter)
    return value

# 每次请求前调用
@version1.before_app_request
def send_request():
    logging.info('发送请求{}'.format(datetime.now()))
    # return '发送请求成功'
    # 应注意return 返回的是Response对象直接输出在浏览器上且优先于视图函数

# 首次请求调用,单个进程只调用一次
@version1.before_app_first_request
def send_first_request():
    logging.info('首次发送请求成功')
    return '首次发送请求'

# 在请求之后调用
@version1.teardown_app_request
def end_request(f):
    logging.debug(f)
    logging.info('响应结束')
    return '响应结束'

# 设置全局上下文,以{{glo_con}}使用在html文件即可
@version1.app_context_processor
def global_context():
    return {'glo_con': 'this is a glo_con'}

# 根据状态码来调用,404.html为自己编写的html文件
@version1.errorhandler(404)
def error_handler(error):
    return render_template('404.html'), 404


@version1.route('/time_day/')
def get_time_day():
    current = datetime.now()
    context = {
        'current': current,
    }
    return render_template('ymdhms.html', **context)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值