Python 烧瓶和金杯2包括标签
如何在jinja2中实现“包含标签”。我需要在基本模板中输出一块文章。他们在儿童身上工作 视图.pyPython 烧瓶和金杯2包括标签,python,django,flask,jinja2,Python,Django,Flask,Jinja2,如何在jinja2中实现“包含标签”。我需要在基本模板中输出一块文章。他们在儿童身上工作 视图.py Articles.query.filter_by(name=name).first() base.html {% block content %} Content base {% endblock %} ---{{ this_articles_tag }}---- {% extends 'base.html' %} {% block content %} Content ch
Articles.query.filter_by(name=name).first()
base.html
{% block content %}
Content base
{% endblock %}
---{{ this_articles_tag }}----
{% extends 'base.html' %}
{% block content %}
Content children
{% endblock %}
---{{ output Articles }}----
children.html
{% block content %}
Content base
{% endblock %}
---{{ this_articles_tag }}----
{% extends 'base.html' %}
{% block content %}
Content children
{% endblock %}
---{{ output Articles }}----
Django在这个“包含标签”中,如何在jinja2中实现它?(不使用上下文处理器)如果需要在模板中包含另一个模板,只需在Jinja中使用即可。但是,如果您谈论的是模板标记(在Django中,我记得我非常喜欢它们),那么在Flask中,只有您提到的上下文处理器才是最佳选择。我认为这一点也不坏 编辑: 中指出了将上下文处理器注册为函数的最简单方法 但是,如果您想要更新奇的东西,比如动态加载程序,或者您将从不同的位置加载function,那么您可以定义自己的装饰函数,它基本上包装了返回字典的函数:
def example_templatetag():
def get_something():
return get_want_you_want_from_db()
return dict(get_something=get_something)
然后,在创建Flask app对象的位置,您可以轻松注册此功能:
app.context_processor(example_templatetag)
然后在模板中,您可以使用如下内容:
{% set data_you_wanted=get_something() %}
{{ data_you_wanted }}
但对于您来说,文档中提到的方式可能就足够了;) Context_protsor可以注册为函数并在模板中调用它吗?我不会在所有页面上使用。在我的回答中添加了两种方法,如何在Jinja模板中获得可用的函数。因此,该函数在上下文处理器中注册。然后它就变成了Django中的templatetag:)谢谢。作为另一种解决方案,可以使用类基视图。在基类中定义上下文。