web-dev-qa-db-ja.com

Django-{%if%}ブロック内のテンプレートタグ

次の辞書をレンダー関数に渡します。ソースは文字列のリストであり、タイトルはソースの文字列の1つと潜在的に等しい文字列です。

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

HTMLテンプレートでは、次の行の中で何かを達成したいと思います。

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

ただし、次のテキストブロックはエラーになります。

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

... with {% if title == {{ source }} %}赤で強調表示されています。

30
Randall Ma

ifまたはifequalステートメント内で二重括弧{{ }}構文を使用しないでください。通常のpythonの場合と同じように、そこで変数に簡単にアクセスできます。

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

Django Doc を参照

9
shiva

古い投稿のコメントで申し訳ありませんが、else ifステートメントを使用したい場合、これはあなたを助けます

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

詳細については Django Documentation をご覧ください

3
Antu

あなたtryこれ。

私はすでにDjangoテンプレートで試しました

それは正常に動作します。中かっこペア{{}}{{source}}

また、<table>タグとthats

変更後、codeは次のようになります。

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

私の辞書は以下のように見えますが、

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

および[〜#〜] output [〜#〜]は、templateがレンダリングされると、次のようになりました。

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