You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中编写正确的多条件IF判断,实现object.star匹配多个指定值

解决Django模板中多值匹配的IF判断问题

我来帮你搞定这个Django模板的条件判断问题!你遇到的问题是因为对模板中or的用法理解有误,咱们一步步来修正:

错误原因分析

你原来写的条件:

{% if object.star == "four" or "five" %}

在Django模板语法里,or的两侧必须是完整的布尔表达式。而你这里的"five"是一个非空字符串,会被直接判定为True,所以这个条件实际上等价于object.star == "four" or True,结果永远为真,完全达不到你想要的"匹配four或five"的效果。之前用and时只有第一个值生效,也是同样的道理:object.star == "four" and "five"等价于object.star == "four" and True,只有当object.star等于four时才会成立。

正确的两种写法

写法1:完整的多条件判断

把每个比较都写完整,用or连接:

{% if object.star == "four" or object.star == "five" %}

写法2:使用in操作符(更简洁)

直接检查object.star是否在目标值列表中:

{% if object.star in ["four", "five"] %}

修正后的完整代码

下面是替换了正确条件后的完整模板代码:

{% for object in object_list %}
    {% if object.star in ["four", "five"] %}
        <div class="col mb-5">
            <div class="card h-100">
                <!-- Product image-->
                <img class="card-img-top">{{object.thumbnail_tag}}
                <!-- Product details-->
                <div class="card-body p-4">
                    <div class="text-center">
                        <!-- Product name-->
                        <a href="{% url 'detail' object.slug %}"><h5 class="fw-bolder">{{object.name}}</h5></a>
                        <!-- Product reviews-->
                        <div class="d-flex justify-content-center small text-warning mb-2">
                            {% if object.star == "four" %}
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                            {% elif object.star == "five" %}
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                                <div class="bi-star-fill"></div>
                            {% endif %}
                        </div>
                        <!-- Product price-->
                        {% if object.newprice == none %}
                            {{object.currency}}{{object.price}}
                        {% else %}
                            <span class="text-muted text-decoration-line-through">{{object.currency}}{{object.price}}</span>
                            <span style="color: #ffc107;">{{object.newprice}}</span>
                        {% endif %}
                    </div>
                </div>
                <!-- Product actions-->
                <div class="card-footer p-4 pt-0 border-top-0 bg-transparent">
                    <div class="text-center"><a class="btn btn-outline-dark mt-auto" href="#">Add to cart</a></div>
                </div>
            </div>
        </div>
    {% endif %}
{% endfor %}

这样就不用写两个独立的IF判断啦,代码更简洁易读。

内容的提问来源于stack exchange,提问作者saleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 10:59:07