Hoe gebruik ik de if/else-voorwaarde op Django-sjablonen?

Ik heb het volgende woordenboek doorgegeven aan een renderfunctie, waarbij bronnen een lijst met tekenreeksen zijn en titel een tekenreeks die mogelijk gelijk is aan een van de tekenreeksen in bronnen:

{'title':title, 'sources':sources})

In de HTML-sjabloon zou ik iets van de volgende regels willen bereiken:

{% for source in sources %}
  <tr>
    <td>{{ source }}</td>
    <td>
      {% if title == {{ source }} %}
        Just now!
      {% endif %}
    </td>
  </tr>
{% endfor %}

Het volgende tekstblok resulteert echter in een fout:

TemplateSyntaxError at /admin/start/
Could not parse the remainder: '{{' from '{{'

…met {% if title == {{ source }} %}in rood gemarkeerd.


Antwoord 1, autoriteit 100%

Gebruik de {{ }}-syntaxis met dubbele haakjes niet in if– of ifequal-statements, je hebt gewoon toegang tot de variabele daar zoals je zou doen in normale python:

{% if title == source %}
   ...
{% endif %}

Antwoord 2, autoriteit 24%

Sorry voor de reactie in een oud bericht, maar als je een else if-statement wilt gebruiken, zal dit je helpen

{% if title == source %}
    Do This
{% elif title == value %}
    Do This
{% else %}
    Do This
{% endif %}

Zie voor meer informatie https://docs.djangoproject. com/nl/3.2/ref/templates/builtins/#if


Antwoord 3, autoriteit 11%

{% for source in sources %}
  <tr>
    <td>{{ source }}</td>
    <td>
      {% ifequal title source %}
        Just now!
      {% endifequal %}
    </td>
  </tr>
{% endfor %}
                or
{% for source in sources %}
      <tr>
        <td>{{ source }}</td>
        <td>
          {% if title == source %}
            Just now!
          {% endif %}
        </td>
      </tr>
    {% endfor %}

Zie Django-document


Antwoord 4, autoriteit 2%

Je probeertdit.

Ik heb het al geprobeerd in mijn django-sjabloon.

Het zal goed werken. Verwijder gewoon het accoladepaar {{en }}uit {{source}}.

Ik heb ook de tag <table>toegevoegd en dat is het.

Na wijziging ziet uw codeer ongeveer zo uit als hieronder.

{% for source in sources %}
   <table>
      <tr>
          <td>{{ source }}</td>
          <td>
              {% if title == source %}
                Just now! 
              {% endif %}
          </td>
      </tr>
   </table>
{% endfor %}

Mijn woordenboek ziet er als volgt uit,

{'title':"Rishikesh", 'sources':["Hemkesh", "Malinikesh", "Rishikesh", "Sandeep", "Darshan", "Veeru", "Shwetabh"]}

en OUTPUTzagen er zoals hieronder uit toen mijn sjabloonwerd weergegeven.

Hemkesh 
Malinikesh  
Rishikesh   Just now!
Sandeep 
Darshan 
Veeru   
Shwetabh    

Other episodes