Python Jinja宏不';看不到传递给渲染模板的值
在某些页面上,我希望我的表单下拉列表按特定顺序排列,在其他页面上则按默认顺序排列。当从我的应用程序传递特定的顺序时,我的宏在Python Jinja宏不';看不到传递给渲染模板的值,python,flask,jinja2,Python,Flask,Jinja2,在某些页面上,我希望我的表单下拉列表按特定顺序排列,在其他页面上则按默认顺序排列。当从我的应用程序传递特定的顺序时,我的宏在form.html中似乎没有看到它下拉列表从不使用,模板始终显示全局数据。为什么会这样 form.html: {% if dropdown %} <select name="status"> {% for option in dropdown %} <option value="{{ op
form.html
中似乎没有看到它<代码>下拉列表从不使用,模板始终显示全局数据。为什么会这样
form.html
:
{% if dropdown %}
<select name="status">
{% for option in dropdown %}
<option value="{{ option }}">{{ option }}</option>
{% endfor %}
</select>
{% else %}
<select name="status">
{% for option in global_add_links_data()[0] %}
<option value="{{ option }}">{{ option }}</option>
{% endfor %}
</select>
{% endif %}
您不是直接呈现
form.html
,而是呈现view.html
并导入form.html
下拉列表是视图.html
上下文的本地内容,因此在表单.html
中总是未定义
要导入带有上下文的模板,请使用带有上下文的
关键字
{% from "form.html" render_form with context %}
更好、更明确的处理方法是将下拉列表作为参数传递给宏。这更有效,因为正如上面提到的文档,导入通常是为了性能而缓存的,但是将与上下文一起使用
会禁用这一功能
{% macro render_form(form, dropdown=None) -%}
{% if dropdown %}
{% else %}
{% endif %}
{%- endmacro %}
您不是直接呈现form.html
,而是呈现view.html
并导入form.html
下拉列表是视图.html
上下文的本地内容,因此在表单.html
中总是未定义
要导入带有上下文的模板,请使用带有上下文的
关键字
{% from "form.html" render_form with context %}
更好、更明确的处理方法是将下拉列表作为参数传递给宏。这更有效,因为正如上面提到的文档,导入通常是为了性能而缓存的,但是将与上下文一起使用
会禁用这一功能
{% macro render_form(form, dropdown=None) -%}
{% if dropdown %}
{% else %}
{% endif %}
{%- endmacro %}