如果有条件在 Django 模板中触发,则无法获得 true
Can't get a true if conditional to trigger in Django Template
我正在尝试通过 运行 if 条件对我的不同博客 post 标签进行样式化,该条件仅检查标签的名称并为该特定标签执行我想要的样式。看起来条件应该检查 True,但只执行了 else 子句下的代码。
在下面的示例中,我的“新闻”标签应具有 class 徽章 badge-primary,但它属于 else 并应用徽章 badge-secondary。
我试过大写和小写。我也尝试过使用和不使用计数器,它用于其他目的。还是不行。
模板:
{% for tag in object.tags.all %}
{% if forloop.counter|divisibleby:"2" %}
{% if tag == "News" %}
<li>
<span class="badge badge-primary">{{ tag }}</span>
</li>
{% else %}
<li>
<span class="badge badge-secondary">{{ tag }}</span>
</li>
{% endif %}
{% endif %}
{% endfor %}
替换时:
{% if tag == "News" %}
有:
{% if tag in object.tags.all %}
有效,标签将按原样填充第一个跨度 class。我相信这告诉我我使用的语法是正确的。出于某种原因,我的 == 条件没有被视为 True,即使它应该是。
为了进一步检查,我 运行 shell 以确保我使用了正确的标签名称。
Tags.objects.all
已返回(为简洁起见,省略了一些):
<QuerySet [<Tags: Reviews>, <Tags: News>, <Tags: Tech>]>
型号:
class Tags(model.Model):
name = models.CharField(max_length=70, default='general')
slug = models.SlugField(max_length=200, null=True, blank=True)
def __str__(self):
return self.name
我正在为我的视图使用通用 DetailView。
谢谢!
当我们迭代 object.tags.all 时,tag 是一个对象,因为调用 .all() 将 return 一个包含所有 Tag 对象的 QuerySet。
相反,您可以试试 tag.name == "News"
我正在尝试通过 运行 if 条件对我的不同博客 post 标签进行样式化,该条件仅检查标签的名称并为该特定标签执行我想要的样式。看起来条件应该检查 True,但只执行了 else 子句下的代码。
在下面的示例中,我的“新闻”标签应具有 class 徽章 badge-primary,但它属于 else 并应用徽章 badge-secondary。
我试过大写和小写。我也尝试过使用和不使用计数器,它用于其他目的。还是不行。
模板:
{% for tag in object.tags.all %}
{% if forloop.counter|divisibleby:"2" %}
{% if tag == "News" %}
<li>
<span class="badge badge-primary">{{ tag }}</span>
</li>
{% else %}
<li>
<span class="badge badge-secondary">{{ tag }}</span>
</li>
{% endif %}
{% endif %}
{% endfor %}
替换时:
{% if tag == "News" %}
有:
{% if tag in object.tags.all %}
有效,标签将按原样填充第一个跨度 class。我相信这告诉我我使用的语法是正确的。出于某种原因,我的 == 条件没有被视为 True,即使它应该是。
为了进一步检查,我 运行 shell 以确保我使用了正确的标签名称。
Tags.objects.all
已返回(为简洁起见,省略了一些):
<QuerySet [<Tags: Reviews>, <Tags: News>, <Tags: Tech>]>
型号:
class Tags(model.Model):
name = models.CharField(max_length=70, default='general')
slug = models.SlugField(max_length=200, null=True, blank=True)
def __str__(self):
return self.name
我正在为我的视图使用通用 DetailView。
谢谢!
tag 是一个对象,因为调用 .all() 将 return 一个包含所有 Tag 对象的 QuerySet。
相反,您可以试试 tag.name == "News"