templates - 烧瓶包含带有变量的模板
问题描述
只是好奇为什么会这样,因为在烧瓶和 jinjia2 官方文档中没有找到这样的例子。似乎include
只是简单地将内容放在原样,对吧?
# app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
names = ['John', 'James', 'Jenny']
return render_template('index.html', names=names)
if __name__ == '__main__':
app.run(port=5200)
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home</title>
</head>
<body>
Welcome!
<!-- I know this is working as official docs -->
{% for name in names %}
<div class='card'>Welcome {{ name }}!</div>
{% endfor %}
<!-- but haven't found any examples like below, but it works -->
{% for name in names %}
{% include "card.html" %}
{% endfor %}
</body>
</html>
<!-- card.html -->
<div class='card'>Welcome {{ name }}!</div>
解决方案
此代码将起作用,因为cards.html 将在“for”循环的每一步重新加载。
我们可以在 jinja 结构中的另一个模板中包含一个模板。这样做时我们不必使用“for”。
要在“for”循环中导航的列表元素是从烧瓶视图中呈现的。这样,我们就可以在渲染时在指定的模板中随意使用渲染的列表及其元素。
{% for name in names %}
{% include "card.html" %}
{% endfor %}
推荐阅读
- google-cloud-platform - 当我使用 Google Cloud Application Flex 提供的 Memcache 服务时,“session_memcached_host:”会是什么。引擎?
- angular - 具有延迟加载和子路由设置的 Angular
- javascript - matter.js 物理引擎中的结果总是不同的
- android - java.lang.NullPointerException:空对象引用上的 FloatingActionButton.setVisibility(int)'
- django - Django selenium:i18n 部分有效
- r - NA 使用 pivot_wider
- python - 从数据集中生成 Wordcloud,仅使用一列
- python - 具有条件增量的 Python-For 循环的行为(给出错误的输出)
- c++ - 如何在 C++ 中按值从函数返回数组
- javascript - 如何连接这个数组