Django - {%if%}块中的模板标记

时间:2012-07-07 04:06:38

标签: django templates django-templates

我将以下字典传递给渲染函数,其中source是一个字符串列表,title是一个字符串,可能等于源中的一个字符串:

{'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 '{{'

... {% if title == {{ source }} %}以红色突出显示。

4 个答案:

答案 0 :(得分:47)

您不应该在{{ }}if语句中使用双括号ifequal语法,您可以像在普通python中一样访问变量:

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

答案 1 :(得分:9)

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

See Django Doc

答案 2 :(得分:2)

很抱歉在旧帖子中发表评论,但是如果您想使用 else if 声明,这将对您有所帮助

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

有关更多信息,请参见Django Documentation

答案 3 :(得分:0)

尝试这个。

我已经在 django模板中尝试过了。

它会正常工作。只需从 {{source}} 中移除大括号对 {{}}

我还添加了&lt; table&gt; 标记和

修改后,您的代码将如下所示。

{% 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 就像下面所示。

Hemkesh 
Malinikesh  
Rishikesh   Just now!
Sandeep 
Darshan 
Veeru   
Shwetabh