Django模板中的if else语句如何中断周期

时间:2018-11-21 10:23:11

标签: django

我阅读了Django docs中的if else语句 但我不明白我的情况。 我有照片列表,如果要覆盖,我要渲染图像,否则我要渲染静态图像。 这是我的代码

{% for x in listing.photos.all %}
{% if x.photo_tipo == 'COVER' %}
<img src="{{ x.get_thumb }}" alt="">
{% else %}
<img src="{% static 'images/about/1.jpg' %}" alt="">
{% endif %}
{% endfor %}

结果是:x.photo =='COVER'的图像和列表中每张其他照片的静态图像。 如果声明为true,我只想得到一个结果;如果声明为false,我只想得到一个静态图像

1 个答案:

答案 0 :(得分:2)

请勿在模板中执行此操作。在某个地方添加一些逻辑,可以直接为您提供具有该类型的照片(如果存在)。一个好方法是使用Listing模型上的方法:

class Listing(models.Model):
    ...
    def cover_photo(self):
        return self.photos.filter(photo_tipo='COVER').first()

现在您的模板可以是:

{% with photo as listing.cover_photo %}
    {% if photo %}
    <img src="{{ photo.get_thumb }}" alt="">
    {% else %}
    <img src="{% static 'images/about/1.jpg' %}" alt="">
    {% endif %}
{% endwith %}