python flask Jinja2 在宏中实现参数

python flask Jinja2 implement parameters inside a MACRO

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:

我会尝试执行以下操作(删除内部括号应该可以解决此问题):

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

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