对{%else%}无法在jinja模板(Mongodb游标)中工作感到困惑

2024-06-10 19:31:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在向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就不能


Tags: 模板iddbsearchifqueryh1perfume
2条回答
{% if perfumes is iterable %}
    value of variable: {{ perfumes }}
{% else %}
    variable is not iterable
{% endif %}

检查香水状态,如@Joran Beasley

你找错地方了

{% if perfumes %}
    {% for perfume in perfumes %}
        {% if perfume %}
        {{ perfume }}
        {% else %}
        {# the only way you will hit this is if you have a list of zeros or none #}
        <h1>No Perfumes Matched your query</h1>
        {% endif %}
    {% endfor %}
{% else %}
No Perfumes
{% endif %}

我认为jinja提供了一种帮助方法,您可以将您的else附加到香水的迭代中

{% for perfume in perfumes %}
    {% if perfume %}
    {{ perfume }}
    {% endif %}
{% else %} 
    {# this else is attached to the for loop... not the if (maybe) #}
    <h1>No Perfumes Matched your query</h1>

{% endfor %}

相关问题 更多 >