web-dev-qa-db-fra.com

Django - Balise de modèle dans le bloc {% if%}

Le dictionnaire suivant est passé à une fonction de rendu, les sources étant une liste de chaînes et le titre, une chaîne potentiellement égale à l'une des chaînes des sources:

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

Dans le modèle HTML, j'aimerais réaliser quelque chose entre les lignes suivantes:

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

Cependant, le bloc de texte suivant génère une erreur:

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

... avec {% if title == {{ source }} %} surligné en rouge.

26
Randall Ma

Vous ne devez pas utiliser la syntaxe {{ }} entre crochets dans les instructions if ou ifequal, vous pouvez simplement accéder à la variable à cet endroit comme vous le feriez en python normal:

{% 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 %}

Voir Django Doc

9
shiva

Désolé pour le commentaire dans un ancien post, mais si vous voulez utiliser une déclaration else si, cela vous aidera

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

Pour plus d'informations, voir Documentation Django

2
Antu

Vous essayez ceci. 

Je l'ai déjà essayé dans mon modèle Django .

Cela fonctionnera bien. Supprimez simplement la paire d'accolades {{et}} de {{source}} .

J'ai également ajouté <table> tag etc'est tout.

Après modification, votre code ressemblera à quelque chose comme ci-dessous. 

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

Mon dictionnaire ressemble à celui ci-dessous,

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

etOUTPUTressemblait à ci-dessous une fois mon template got render.

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