2

如何在 jinja2 中“包含标签”。我需要在基本模板中输出一块文章。他们在儿童中工作。

视图.py

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

base.html

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

儿童.html

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

Django 在这个“包含标签”中,在 jinja2 中怎么做?(不使用 context_processor)

4

1 回答 1

2

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

编辑:

文档中指出了将上下文处理器注册为函数的最简单方法。

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

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 }}

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

于 2013-02-08T13:11:31.560 回答