it-swarm.com.ru

Django - тег шаблона в блоке {% if%}

У меня есть следующий словарь, переданный в функцию рендеринга, с источниками, являющимися списком строк, и заголовком, являющимся строкой, потенциально равной одной из строк в источниках:

{'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 }} %} красным цветом.

26
Randall Ma

Вы не должны использовать синтаксис {{ }} в двойных скобках в операторах if или ifequal, вы можете просто получить доступ к переменной там, как в обычном python:

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

См. Django Doc

9
shiva

Извините за комментарий в старом сообщении, но если вы хотите использовать оператор else if, это поможет вам

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

Для получения дополнительной информации см. Документация Django

2
Antu

Вы попробуйте это. 

Я уже пробовал это в моем шаблон Django .

Это будет работать нормально. Просто удалите пару фигурных скобок {{and}} из {{source}} .

Я также добавил <таблица> тег иэто все.

После изменения ваш код будет выглядеть примерно так: 

{% 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    
0
hygull