Для L oop HTML Django - PullRequest
       0

Для L oop HTML Django

0 голосов
/ 05 февраля 2020

У меня есть для l oop в моем проекте Django, я пытаюсь сделать следующее:

If
morning_recess == True
lunch_recess == True
afternoon_recess == True

then the bootstrap tag in that field should be
<td><span class="badge badge-success">Success</span></td>
else
<td> None </td>

Вот мой текущий код:

<table style="width:100%">
  <tr>
    <th>Student Name</th>
    <th>Morning Recess</th>
    <th>Lunch Recess</th>
    <th>Afternoon Recess</th>
    <th>Earned At</th>

  </tr>

  <tr>
     {% for i in students_recess_today %}
     {% if i.morning_recess == True %}
     <td>{{i.student_ps }}</td>
     <td><span class="badge badge-success">Success</span></td>
     <td>{{i.lunch_recess}}</td>
     <td>{{i.afternoon_recess}}</td>
     <td>{{i.created_at}}</td>
     {% else %}
     <td>{{i.student_ps }}</td>
     <td>None</td> 
     <td>{{i.lunch_recess}}</td>
     <td>{{i.afternoon_recess}}</td>
     <td>{{i.created_at}}</td>
     {% endif %}
  </tr>

{% endfor %}
</table>
</div>

morning_recess работает нормально, однако, если я сделаю другой оператор if после следующего, порядок в моей таблице будет испорчен. Как мне написать это правильно? Спасибо

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Непонятно, что означает «в этом поле», потому что в вашем примере у вас есть один столбец extra перед столбцом morning_recess. Но вы можете поместить {% if %} операторов в любое место в шаблоне, например:

<td>
  {% if i.morning_recess %}
    <span class="badge badge-success">Success</span> 
  {% else %}
    <span>None</span>
  {% endif %}
</td>
<td>
  {% if i.lunch_recess %}
    <span class="badge badge-success">Success</span> 
  {% else %}
    <span>None</span>
  {% endif %}
</td>
<td>
  {% if i.afternoon_recess %}
    <span class="badge badge-success">Success</span> 
  {% else %}
    <span>None</span>
  {% endif %}
</td>
...

Также, как предлагают другие комментаторы, ваш for l oop, вероятно, должен обернуть строки вашей таблицы (<tr>...</tr> ), а не столбцы (<td>).

0 голосов
/ 05 февраля 2020

У вас есть элемент l oop частично внутри элемента tr. Он начинает строку в начале и для каждого учащегося добавляет столбцы и заканчивает строку, поэтому в конечном итоге он выглядит как <tr></tr></tr></tr>.

Вы должны переместить ваше утверждение for за пределы строки, например, так :

...

{% for i in students_recess_today %}
  <tr>
    ...
  </tr>
{% endfor %}
</table>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...