大家都知道在 Flask 中我们可以通过 render_template
函数来实现渲染模板。在学习过程中意外发现 Flask 下包含了一个与其命名非常相似的 template_rendered
函数。十分的好奇,查了一下文档,文档是这么写的:
flask.template_rendered
This signal is sent when a template was successfully rendered.
The signal is invoked with the instance of the template as template and the context as dictionary (named context).
看来应该是在模板成功渲染后返回一个字典。
但是文档里写的具体使用场景我不是非常理解,所以想请教各位一下,究竟这个函数应在什么情况下使用,该怎么使用呢?
from flask import template_rendered
from contextlib import contextmanager
@contextmanager
def captured_templates(app):
recorded = []
def record(sender, template, context, **extra):
recorded.append((template, context))
template_rendered.connect(record, app)
try:
yield recorded
finally:
template_rendered.disconnect(record, app)
Il s'agit d'un signal qui sera exécuté chaque fois qu'un modèle est rendu. Vous pouvez vous abonner à ce signal pour obtenir la valeur qu'il renvoie.
ps : mis à part le débogage, je ne vois aucune situation dans laquelle il serait utilisé.
Le signal
template_rendered
est le signal principal de Flask.Ce signal sera envoyé lorsqu'un modèle est rendu avec succès. Ce signal est appelé avec un modèle d'instance de modèle et un dictionnaire de contextes (nommé context ).
Ce blog fournit des instructions spécifiques https://segmentfault.com/a/11...