python - Flask 条件渲染
问题描述
我想创建“卡片”,其中包含属于几个类别的某些项目的详细信息,每张卡片都包含一个类别的项目。例如,第一张卡片将包含 CategoryOne 中的所有项目,第二张卡片将包含 CategoryTwo 中的所有项目。我已将项目添加到 sqlite 数据库中。每个类别都有一个名称。每个项目都有
但是,我似乎每张卡都得到相同的物品。也就是说,CategoryOne 中的项目显示在两张卡片中。
解决方案
从您的代码来看,您似乎希望在运行查询时至少返回 2 个类别 -categories = session.query(Category).order_by(Category.name)
但是当你开始你的循环时,你会在第一次迭代之后返回。在执行此退货之前,您将检索该特定类别的项目。这意味着发送到您的模板的数据包含所有类别,并且仅包含属于其中一个类别的项目。
解决您的问题的一种可能方法(请注意,这只是一个粗略的示例)是创建表单的字典数组
output = [{"category_name": <category_name>, "category_items": <items>}]
然后你遍历你的 html 文件中的输出,比如
<div class="col s12 m12 l12">
{% for k in output %}
<div class="card">
<div class="card-content">
<div class="d-flex align-items-center">
<div>
<h5 class="card-title">{{k.category_name}}</h5>
.....
<tbody class="white">
{% for a in k.category_items %}
<tr>
...
<strong>{{a.name}}</strong>
</p>
<p>
{{a.series}}
</p>
...
</td>
<td>
<div class="blue-grey-text text-darken-4 font-medium flow-text">
{{a.price}}
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
{% endfor %}
</div>
更新于 5 月 11 日添加。
你的 python 代码应该是这样的
@app.route('/', methods=['GET', 'POST'])
def showList():
output =[]
categories = session.query(Category).order_by(Category.name)
for c in categories:
if c.name == 'CategoryOne':
category_id = 1
elif c.name == 'CategoryTwo':
category_id = 2
category = session.query(Category).filter_by(id=category_id)
items = session.query(Item).filter_by(category_id=category_id).all()
output.append({"category_name": c.name, "category_items": items})
return render_template('index.html',output=output)
推荐阅读
- dataframe - 重命名数据框pyspark中的列添加字符串
- react-native - 升级到 RN 0.56 出现错误:找不到与给定名称匹配的资源 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'
- python - Python 导入错误 - 运行 unittest
- ios - 如何使用 touchesBegan 和 touchesEnded 检测点击手势
- c# - Windows UIAutomationElement 内存泄漏
- java - 如何在 android.support.design.chip.Chip 中设置文本颜色?
- websocket - 通过 websocket 使用 Broadway.js 和 raspi-camera 的问题
- jenkins - 将 Jenkins 连接到 GCP 容器注册表
- python - 未找到 GraphViz 的可执行文件(python 3 和 pydotplus)
- python - 如何创建具有最小值计数的子 DatafFrame