Jinja2 / Flask - 在一页中多次重复使用基本模板
Jinja2 / Flask - Re-using a base template many times in one page
我的网站有共同的基本元素,我要在一个页面上多次重复使用这些元素。
在一个站点中,将有多个下拉菜单,每个下拉菜单都有一组不同的下拉菜单。
目前,我使用render_template
的方式如下:
from flask import render_template
@app.route('/')
def index():
return render_template('LandingPage.html',
FileName='Hi.png', relatedlist=['NewUser',"OtherNewUser"])
我正在为我的 select 表格使用 bulma,它看起来像:
<div class="select">
<select name="{{FileName|safe}}">
{% for val in relatedlist%}
<option href="#" class="dropdown-item">
{{val}}
</option>
{% endfor %}
</select>
</div>
现在,我的主页看起来像:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include "LandingPage.html" %}
</body>
</html>
如果我想在 LandingPage.html
中多次重复使用这个 select 列表,我该怎么做,因为 Filename
和 relatedlist
是一个-从我的 python 代码推送一对一映射?
谢谢!
我认为你应该为 bulma 创建一个带有 macros 的文件。
对于您的下拉菜单,它看起来像这样。
{# macros/bulma.html -#}
{% macro select(name, values) -%}
{% set cls = kwargs.pop('class_') or kwargs.pop('class') -%}
<div class="select{{(' ' + cls) if cls else ''}}"{{kwargs|xmlattr}}>
<select name="{{name}}">
{% for v in values -%}
<option value="{{v}}">{{v}}</option>
{% endfor -%}
</select>
</div>
{%- endmacro %}
然后您可以将此文件导入模板并为各种下拉菜单重复使用该宏。
{% import 'macros/bulma.html' as bulma -%}
{% for i in range(10) -%}
{{ bulma.select(filename, related_list, class_='is-primary') }}
{% endfor -%}
我的网站有共同的基本元素,我要在一个页面上多次重复使用这些元素。
在一个站点中,将有多个下拉菜单,每个下拉菜单都有一组不同的下拉菜单。
目前,我使用render_template
的方式如下:
from flask import render_template
@app.route('/')
def index():
return render_template('LandingPage.html',
FileName='Hi.png', relatedlist=['NewUser',"OtherNewUser"])
我正在为我的 select 表格使用 bulma,它看起来像:
<div class="select">
<select name="{{FileName|safe}}">
{% for val in relatedlist%}
<option href="#" class="dropdown-item">
{{val}}
</option>
{% endfor %}
</select>
</div>
现在,我的主页看起来像:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include "LandingPage.html" %}
</body>
</html>
如果我想在 LandingPage.html
中多次重复使用这个 select 列表,我该怎么做,因为 Filename
和 relatedlist
是一个-从我的 python 代码推送一对一映射?
谢谢!
我认为你应该为 bulma 创建一个带有 macros 的文件。
对于您的下拉菜单,它看起来像这样。
{# macros/bulma.html -#}
{% macro select(name, values) -%}
{% set cls = kwargs.pop('class_') or kwargs.pop('class') -%}
<div class="select{{(' ' + cls) if cls else ''}}"{{kwargs|xmlattr}}>
<select name="{{name}}">
{% for v in values -%}
<option value="{{v}}">{{v}}</option>
{% endfor -%}
</select>
</div>
{%- endmacro %}
然后您可以将此文件导入模板并为各种下拉菜单重复使用该宏。
{% import 'macros/bulma.html' as bulma -%}
{% for i in range(10) -%}
{{ bulma.select(filename, related_list, class_='is-primary') }}
{% endfor -%}