python - Flask/Jinja2 渲染多个集合
问题描述
我正在使用 pymango、Flask 和 Jinja2 创建一个 MongoDB Web 应用程序。与数据库连接时,我有三个集合,我可以在集合中插入新数据,但是当我使用 Jinja2 在 HTML 中渲染时,我基本上得到了两次具有相同数据的重复行。我是 python 和 Jinja 的新手。
enter code here
@app.route("/addcar", methods=["GET", "POST"])
def addcar():
if request.method == "POST":
cars = {
"car_image": request.form.get("car_image"),
"car_year": request.form.get("car_year"),
"car_name": request.form.get("car_name"),
"car_design": request.form.get("car_design"),
"car_driver1": request.form.get("car_driver1"),
"car_driver2": request.form.get("car_driver2")
}
specs = {
"spec_engine": request.form.get("spec_engine"),
"car_power": request.form.get("car_power"),
"trasmission": request.form.get("trasmission")
}
stats = {
"races": request.form.get("races"),
"wins": request.form.get("wins"),
"podiums": request.form.get("podiums"),
"poles": request.form.get("poles"),
"fast_laps": request.form.get("fast_laps"),
"constructor_champ": request.form.get("constructor_champ"),
"drivers_champ": request.form.get("drivers_champ"),
"description": request.form.get("description")
}
mongo.db.cars.insert_one(cars)
mongo.db.specs.insert_one(specs)
mongo.db.stats.insert_one(stats)
flash("Car Successfully Added")
return redirect(url_for("get_cars"))
return render_template("addcar.html")`
在这里输入代码
enter code here
{% extends "base.html" %}
{% block content %}
<div class="row row justify-content-center mt-4">
{% for car in cars %}
<div class="card mb-3" style="max-width: 840px;">
<div class="row g-0">
<div class="col-md-4">
<img src="{{ car.car_image }}" class="imgCard" alt="ferrari image">
</div>
<div class="col-md-8">
<div class="card-body">
<ul class="list-group list-group-flush">
<li class="list-group-item"><strong>Year</strong>: {{ car.car_year }}</li>
<li class="list-group-item"><strong>Name</strong>: {{ car.car_name }}</li>
<li class="list-group-item"><strong>Designer</strong>: {{ car.car_design }}</li>
</ul>
{% for spec in specs %}
<ul class="list-group list-group-flush">
<li class="list-group-item"><strong>Engine</strong>: {{ spec.spec_engine }}</li>
<li class="list-group-item"><strong>Power</strong>: {{ spec.car_power }}</li>
<li class="list-group-item"><strong>Trasmission</strong>: {{ spec.trasmission }}</li>
</ul>
{% endfor %}
</div>
</div>
</div>
</div>
{% endfor %}
</div>
enter code here
{% endblock %}
解决方案
如果您的 html 文件看起来像这样,它将不会显示复制的语句。
{% extends "base.html" %}
{% block content %}
<div class="row row justify-content-center mt-4">
<div class="card mb-3" style="max-width: 840px;">
<div class="row g-0">
<div class="col-md-4">
<img src="{{ car['car_image'] }}" class="imgCard" alt="ferrari image">
</div>
<div class="col-md-8">
<div class="card-body">
<ul class="list-group list-group-flush">
<li class="list-group-item"><strong>Year</strong>: {{ car['car_year' }}</li>
<li class="list-group-item"><strong>Name</strong>: {{ car['car_name'] }}</li>
<li class="list-group-item"><strong>Designer</strong>: {{ car['car_design'] }}</li>
</ul>
<ul class="list-group list-group-flush">
<li class="list-group-item"><strong>Engine</strong>: {{ spec['spec_engine'] }}</li>
<li class="list-group-item"><strong>Power</strong>: {{ spec['car_power'] }}</li>
<li class="list-group-item"><strong>Trasmission</strong>: {{ spec['trasmission'] }}</li>
</ul>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
在您的烧瓶视图中,将返回语句更改为此,
return render_template("addcar.html", car=cars, spec=specs)
假设上面写的html是
推荐阅读
- python - 按钮单击后刷新QML文件中的QQuickWidget
- amazon-web-services - 具有 Lambda 集成的无服务器部署 API 网关
- c# - 模型可以直接与数据访问层通信吗?
- typo3 - 如何提供自定义 FE-Authentification 方法
- php - PHP 将 MS SQL 输出到可下载的 CSV 或 Excel 文件
- javascript - 两个组件之间切换的vue过渡动画不流畅
- tomcat - 如何更改 Tomcat 8.5 日志文件夹
- java - 错误:在类路径上找到多个 RestConsumerFactory
- php - 如何将信息从表格复制到 PHP?
- reactjs - (反应)只渲染一个孩子(来自props.children)取决于路线(location.pathname)