58

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

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

4 回答 4

90

您不应该在or语句中使用双括号{{ }}语法,您可以像在普通 python 中一样简单地访问那里的变量:ififequal

{% if title == source %}
   ...
{% endif %}
于 2012-07-07T04:15:24.933 回答
21

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

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

有关更多信息,请参阅https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#if

于 2018-10-29T07:06:57.497 回答
10
{% 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 文档

于 2012-07-07T04:13:57.573 回答
2

试试这个。

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

它会正常工作。只需从{{source}}中删除花括号对{{} } 即可。

我还添加了<table>标签,仅此而已

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

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

一旦我的模板被渲染,输出看起来像下面。

Hemkesh 
Malinikesh  
Rishikesh   Just now!
Sandeep 
Darshan 
Veeru   
Shwetabh    
于 2017-08-31T11:58:34.853 回答