全局变量未在{%set%}中定义

时间:2016-12-14 02:46:07

标签: python flask jinja2

我有以下内容:

的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?

1 个答案:

答案 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 %}

让我知道这个方法的工作将在稍后给出更多解释