python flask Jinja2在宏内实现参数

时间:2018-12-17 13:48:06

标签: python html flask macros placeholder

this guide之后,我想在宏中实现BACKEND参数。

例如: 我的宏称为infrastructure/buttons_utils.html

{% macro navigation_button_test(btn_name, placeholder) -%}
    <input  type="submit"
            class="btn btn-primary btn-lg"
            value="{{ placeholder }}"
            id="{{ btn_name }} ">
{%- endmacro %}

然后我渲染一个HTML模板,其中包含一个名为top_buttons_list的列表,这是一个字典列表。我的代码是:

{% import 'infrastructure/buttons_utils.html' as buttons_utils %}

        <div class="vmiddle_wrapper">
            {% for button in top_buttons_list %}
                {% set button_params = button.button_params %}
                    <div> PLACEHOLDER TEST: {{ button_params.placeholder }} </div>        
            <div> {{ buttons_utils.navigation_button_test(btn_name='name', placeholder="{{ button_params.placeholder }}" ) }} </div>
            {% endfor %}
        </div>

除了屏幕上显示带有正确PLACEHOLDER的按钮外,我实际上是在按钮上显示以下字符串:"{{ button_params.placeholder }}"

这是我得到的HTML:

enter image description here

1 个答案:

答案 0 :(得分:1)

我将尝试执行以下操作(卸下内括号应可解决此问题):

{{ buttons_utils.navigation_button_test(btn_name='name', placeholder=" button_params.placeholder" ) }}

Jinja自动知道如何在内部实现对象,这就是为什么您只应使用左括号{{和右括号}}