Home > database >  Django Templates Syntax Error For If (Could not parse the remainder)
Django Templates Syntax Error For If (Could not parse the remainder)

Time:07-25

Why does this not work in Django?

    {% for img in image_list %}
      {% if img != image_list[-1] %}
      <img src="{% get_media_prefix %}{{ img.image }}"  alt="Recipe Image Secondary">
      <br>
      {% endif %}
    {% endfor %}

Simple Python (works):

for img in image_list:
    if img != (image_list[-1]):
        print(img)

{% if img != image_list[-1] %} throws a TemplateSyntaxError Could not parse the remainder: '[-1]' from 'image_list[-1]'

CodePudding user response:

You can work with the |last template filter [Django-doc] to obtain the last item of a sequence:

{% for img in image_list %}
  {% if img != image_list|last %}
  <img src="{{ img.image.url }}"  alt="Recipe Image Secondary">
  <br>
  {% endif %}
{% endfor %}

or in this case work with forloop.last [Django-doc]:

{% for img in image_list %}
  {% if not forloop.last %}
  <img src="{{ img.image.url }}"  alt="Recipe Image Secondary">
  <br>
  {% endif %}
{% endfor %}

CodePudding user response:

{% for img in image_list %}
{% if not forloop.last %}
  <img src="{% get_media_prefix %}{{ img.image }}"  alt="Recipe Image Secondary">
  <br><br>
{% else %}
  <img src="{% get_media_prefix %}{{ img.image }}"  alt="Recipe Image Secondary">
{% endif %}
{% endfor %}
  • Related