flask - 将上下文传递给 Jinja 模板中包含的 Jinja 模板

标签 flask jinja2

我在所有 Jinja 文件中都有共同的东西。我想将所有常见内容移至 Flask 中的一个 Jinja 文件中。

我的应用程序是用 Flask 编写的,我将上下文传递给 Jinja 模板,例如

def f1(name): render_template('j1.jinja', name=name)

def f2(name): render_template('j2.jinja', name=name)

def f3(name): render_template('j3.jinja', name=name)

我的j1.jinja文件是:

{%block content %}
Name: {{ name }}
Hello
{% endblock %}

我的j2.jinja文件是:

{%block content %}
Name: {{ name }}
Bye
{% endblock %}

我的j3.jinja文件是:

{%block content %}
Name: {{ name }}
Howdy
{% endblock %}

我将常见内容移至单个 Jinja 文件 common.jinja ,即:

{% block content %}
Name : {{name}}
{% endblock %}

我将其包含在所有 Jinja 文件中,例如:

{% include 'common.jinja' with { "name": name } only %}

这不起作用。我收到异常:

Exception Occured. Explanation: expected token 'end of statement block', got 'with'

如何将上下文传递给包含的 Jinja 文件?

最佳答案

你的代码看起来有点奇怪。没有单独的 with 语句指定上下文,它是 with context ,它经常与 import 语句一起使用(参见 Import context behaviour )。

要将任何上下文传递给包含的模板,只需使用上下文变量渲染父模板即可,例如在render_template()中:

render_template('j3.jinja', name=name)

关于flask - 将上下文传递给 Jinja 模板中包含的 Jinja 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35449415/

相关文章:

Python Redis 队列

scripting - 在ansible中展平和过滤复杂的结构 - 字典列表的字典

javascript - js 脚本未加载到 jinja2 模板中

python - 获取对 python 模块中列表的引用并对其进行迭代

javascript - 在 html 和 javascript 中迭代循环仅执行一次 - 应该在循环中每次执行

python - 通过 Flask-Python 为 React 生产应用程序(本地服务器)提供服务

Flask-cache memcache 连接自动重新连接

python - 由于 QueuePool 溢出限制,Flask SqlAlchemy MySQL 连接超时

python - Pyramid i18n 使用两个语言环境目录

flask - 如何在 Flask 页面请求之间保留查询?