我有以下内容:
的layout.html
{% if enableEntry or enableExit %}
{% from "cp.layout.html" import entry, exit %}
{% endif %}
<!DOCTYPE html>
<html lang="en">
<body>
{% if enableEntry %}{{ entry }}{% endif %}
{% if enableExit %}{{ exit }}{% endif %}
{% block body %}{% endblock %}
</body>
</html>
cp.layout.html
{% set entry %}
...
{% if offer.text_id == "mcd" %}
Mcdonald
{% elif offer.text_id == "bk" %}
Burger King
{% endif %}
...
{% endset %}
在我看来:
def test():
.... (offer is defined here) ...
return render_template('layout.html', offer=offer)
我收到UndefinedError: 'offer' is undefined
有没有办法将视图中具有全局范围的变量传递给{%set%} blocs?
答案 0 :(得分:0)
好像你从未在 layout.html
下包含 test.html我不确定这是否有帮助,这是我的jinja 2模板设计你可以试试
的layout.html
{%- extends "test.html" %}
{# {% include "test.html" %} #}
{% block content %}
{{ super() }}
{%- endblock %}
的test.html
{% block content %}
<div>
<h1>{{ offer }}</h1>
</div>
{% endblock %}
让我知道这个方法的工作将在稍后给出更多解释