Python 烧瓶和金杯2包括标签

Python 烧瓶和金杯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

如何在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 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:)谢谢。作为另一种解决方案,可以使用类基视图。在基类中定义上下文。