python - Flask 和 jinja2 包含标签

标签 python jinja2

如何在 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标签”,在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 }}

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

关于python - Flask 和 jinja2 包含标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772469/

相关文章:

python - Flask/Mongo/Jinja - 切片 ListField 并显示数据库的最后条目

python - 对齐 Bootstrap 'Thumbnail Grid System'

python - 使用蓝图在 Flask 中重复 url_prefix

html - 如何更改每个动态创建的 FlexBox 的背景颜色?

jinja2 - 如何在 Ansible playbook 中编写动态变量

python - Pytorch 3D 张量与 1D 张量的内积生成 2D 张量

Python Peewee : One Model Multiple Tables

python - 为什么我通过pandas访问MySQL时得到Timedelta类型

python - PyCharm 中有 "Edit and Continue"吗?像在 Eclipse/PyDev 中那样将代码重新加载到正在运行的程序中?

python - Numpy.unique 行为(扁平化不一致?)