Python全系列 教程
3567个小节阅读:5930.7k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
钩子函数概念
在Flask中钩子函数是使用特定的装饰器装饰的函数。
为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码。
那么这种函数就叫做钩子函数。
常见的钩子函数
before_first_request:处理项目的第一次请求之前执行。
xxxxxxxxxx
@app.before_first_request
def first_request():
print('first time request')
before_request:在每次请求之前执行。通常可以用这个装饰器来给视图函数增加一些变量。请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用。一般这个就是在视图函数之前,我们可以把一些后面需要用到的数据先处理好,方便视图函数使用。
xxxxxxxxxx
@app.before_request
def before_request():
if not hasattr(g,'glo1'):
setattr(g,'glo1','想要设置的')
teardown_appcontext:不管是否有异常,注册的函数都会在每次请求之后执行。
xxxxxxxxxx
@app.teardown_appcontext
def teardown(exc=None):
if exc is None:
db.session.commit()
else:
db.session.rollback()
db.session.remove()
template_filter:在使用Jinja2模板的时候自定义过滤器。
xxxxxxxxxx
@app.template_filter("upper")
def upper_filter(s):
return s.upper()
context_processor:上下文处理器。使用这个钩子函数,必须返回一个字典。这个字典中的值在所有模版中都可以使用。这个钩子函数的函数是,如果一些在很多模版中都要用到的变量,那么就可以使用这个钩子函数来返回,而不用在每个视图函数中的render_template
中去写,这样可以让代码更加简洁和好维护。
xxxxxxxxxx
@app.context_processor
def context_processor():
if hasattr(g,'user'):
return {"current_user":g.user}
else:
return {}
errorhandler:errorhandler接收状态码,可以自定义返回这种状态码的响应的处理方法。在发生一些异常的时候,比如404错误,比如500错误,那么如果想要优雅的处理这些错误,就可以使用errorhandler
来出来。
xxxxxxxxxx
@app.errorhandler(404)
def page_not_found(error):
return 'This page does not exist',404
实时学习反馈
1. 在Flask中,对钩子函数说法错误的是?
A 钩子函数可以在处理业务逻辑的前后增中功能逻辑
B 钩子函数可以在处理业务时增加功能逻辑
C 钩子函数只能用在请求前有增加功能逻辑
D 钩子函数可以理解为特定的装饰器
答案
1=>C