webentwicklung-frage-antwort-db.com.de

Django - Template-Tag im Block {% if%}

Ich habe das folgende Wörterbuch an eine Renderfunktion übergeben, wobei sources eine Liste von Strings und title ein String sind, der möglicherweise einem der Strings in Source entspricht:

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

In der HTML-Vorlage möchte ich etwas zwischen den folgenden Zeilen erreichen:

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

Der folgende Textblock führt jedoch zu einem Fehler:

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

... wobei {% if title == {{ source }} %} rot markiert ist.

26
Randall Ma

Sie sollten die {{ }}-Syntax der doppelten Klammer nicht in if- oder ifequal-Anweisungen verwenden.

{% if title == source %}
   ...
{% endif %}
45
Herman Schaaf
{% 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 %}

Siehe Django Doc

9
shiva

Tut mir leid für einen Kommentar in einem alten Beitrag, aber wenn Sie eine else-Anweisung verwenden möchten, hilft dies Ihnen

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

Weitere Informationen finden Sie unter Django-Dokumentation

2
Antu

Sie versuchen dies. 

Ich habe es bereits in meiner Django-Vorlage ausprobiert.

Es wird gut funktionieren. Entfernen Sie einfach das geschweifte Klammerpaar {{ und }} aus {{{{}}}.

Ich habe auch <table> tag und das ist es hinzugefügt.

Nach der Änderung sieht Ihr code unten etwa so aus. 

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

Mein Wörterbuch sieht wie folgt aus,

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

und OUTPUT sah wie folgt aus, sobald mein template gerendert wurde.

Hemkesh 
Malinikesh  
Rishikesh   Just now!
Sandeep 
Darshan 
Veeru   
Shwetabh    
0
hygull