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 自动知道如何在内部实现对象,这就是为什么您应该只使用左括号 {{ 和右括号 }}
在 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 自动知道如何在内部实现对象,这就是为什么您应该只使用左括号 {{ 和右括号 }}