Найти - Пользователи
Полная версия: Возможно ли оптимизировать один шаблон на 2 представления?
Начало » Django » Возможно ли оптимизировать один шаблон на 2 представления?
1
qman
Всем привет,
есть такой шаблон
<table border = "1">
{% for book in books%}

{% if forloop.first %}
<tr>
<td>Книга</td>
{% if book.count %}<td>Кол-во</td>{% endif %}
<td>Удалить</td></tr>
{% endif %}

<tr>
<td><a href="edit/{{book.id}}/" TITLE="Щелкните, чтобы редактировать {{book}}">
{{ book }}</a></td>
{% if book.count %}<td>{{ book.count }}</a></td>{% endif %}
<td><a href="delete/{{book.id}}/" TITLE="Щелкните, чтобы удалить {{book}}">X</td>
</tr>
{% endfor %}
</table>
хочу его нужно использовать в двух представлениях. В первом случае нужно вывести таблицу - список книг. Во втором случае вывести таблицу - название книг и их кол-во (book.count). Можно ли как то оптимизировать код - исключить из цикла условие
{% if forloop.first  %}
<tr>
<td>Книга</td>
{% if book.count %}<td>Кол-во</td>{% endif %}
<td>Удалить</td></tr>
{% endif %}
Но тогда как определить что переменная book имеет поле count?
P.S. или оставить код как есть?
poltergeist
Зачем делать из двух шаблонов один? Не вижу в данном случае смысла. В случаях, когда два темплейта не сильно отличаются по контенту и по логике, я делаю один из них базовым (добавляю ему дополнительные {% block … %} {% endblock %}), а второй делаю путём расширения первого (за счёт тех дополнительных блоков в первом темплейте, т.е. {% extends … %}). Таким образом всё равно будет два темплейта, но всегда будет понятно что один из них базовый и все они выполняют примерно одинаковую функцию.
regall
poltergeist
В случаях, когда два темплейта не сильно отличаются по контенту и по логике, я делаю один из них базовым
В данном случае, по моему, самый верный способ. Главное правильно бить на блоки, а там гляди, и еще появятся странички, которые хорошо состыкуются с этими шаблонами
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB