我正在向jinja模板发送聚合游标,如下所示(此处简化):
@app.route("/search")
def search():
db_query = request.args["db_query"]
results = mongo.db.perfumes.aggregate(
[
{"$match": {"$text": {"$search": db_query}}},
{
"$lookup": {
"from": "users",
"localField": "author",
"foreignField": "username",
"as": "creator",
}
},
{"$unwind": "$creator"},
{
"$project": {
"_id": "$_id",
"perfumeName": "$name",
"perfumeBrand": "$brand",
"perfumeDescription": "$description",
}
},
{"$sort": {"perfumeName": 1}},
]
)
return render_template("pages/perfumes.html", perfumes=results)
但光标上的迭代会产生一些奇怪的结果,模板中的以下内容(此处也简化)不起作用:
{% for perfume in perfumes %}
{% if perfume %}
{{ perfume }}
{% else %}
<h1>No Perfumes Matched your query</h1>
{% endif %}
{% endfor %}
意思是:{{ perfume }}
显示良好,这是基于查询的预期输出,但是如果查询没有找到任何结果,我没有在else
中得到预期的消息:“没有香水匹配您的查询”。
我完全糊涂了,无法理解为什么如果if
有效,那么else
就不能
检查香水状态,如@Joran Beasley
你找错地方了
我认为jinja提供了一种帮助方法,您可以将您的else附加到香水的迭代中
相关问题 更多 >
编程相关推荐