代码之家  ›  专栏  ›  技术社区  ›  101010

如何在Jinja2的子模板中设置变量?

  •  1
  • 101010  · 技术社区  · 6 年前

    This question was asked once

    我试图在子模板中设置一个变量,以便它更改父模板呈现内容的方式。在这个问题上,我给出了一个实际的例子。

    我的网站有两种模板。一种显示内容和全宽模板的方法。

    页面.html

    {% extends "base.html" %}
    
    {% block content %}
            <div id="pageContentContainer">
                <div class="row">
                {% if fullwidth %}
                    <div class="col-12">fffff
                        {{super()}}
                    </div>
                {% else %}
                    <div class="col-9">
                        {{super()}}
                    </div>
                {% endif %}
                </div>
            </div>
    {% endblock %}  
    

    {% extends "page.html" %}
    
    {% block content %}
        {% set fullwidth = true %}
        {{super()}}
    {% endblock %}
    

    这不管用。变量 fullwidth 在父模板中不是True。

    还有其他可行的方法吗?我不想重复 page.html 在里面 page-fullwidth.html . (在真实的文件中,这个文件更复杂。)

    1 回复  |  直到 6 年前
        1
  •  5
  •   101010    6 年前

    几乎是对的。这就是答案。变量设置器需要在块之外

    page-fullwidth.html页面

    {% extends "page.html" %}
    
    {% set fullwidth = true %}
    
    {% block content %}
        {{super()}}
    {% endblock %}