Skip to main content
 首页 » 编程设计

python之Flask 和 jinja2 include 标签

2025年05月04日13telwanggs

如何在 jinja2 中“包含标签”。我需要在基本模板中输出一段文章。它们对 child 有效。

views.py

Articles.query.filter_by(name=name).first() 

base.html

{% block content %} 
    Content base 
{% endblock %} 
---{{ this_articles_tag }}---- 

children.html

{% extends 'base.html' %} 
{% block content %} 
    Content children 
{% endblock %} 
---{{ output Articles }}---- 

Django中的这个“include tag”,在jinja2中怎么做? (不使用 context_processor)

请您参考如下方法:

如果您需要在模板中包含另一个模板,只需使用 include在金贾。但是如果你在谈论模板标签(在 Django 中我记得我非常喜欢它们),那么在 Flask 中只有你提到的 context_processor 是可行的方法。我认为这根本不是一件坏事。

编辑:

将上下文处理器注册为函数的最简单方法在 documentation 中指出.

但是如果你想要更花哨的东西,比如动态加载器或者你将从不同的地方加载你的函数,那么你可以定义你自己的装饰器函数,它基本上包装了返回字典的函数:

def example_templatetag(): 
  def get_something(): 
    return get_want_you_want_from_db() 
  return dict(get_something=get_something) 

然后您可以在创建 Flask 应用程序对象的地方轻松注册此函数:

app.context_processor(example_templatetag) 

然后在模板中你可以使用如下:

{% set data_you_wanted=get_something() %} 
{{ data_you_wanted }} 

但也许对你来说,文档中提到的方式就足够了;)