Наиболее эффективный способ рисования колонок в шаблоне / представлении django
У меня есть приложение, в котором я позволяю пользователям создавать индивидуальную приборную панель, содержащую "виджеты". Они могут выбрать 1, 2 или 3 столбца, а затем выбрать столбец виджетов и порядок виджетов.
Виджеты будут иметь разную высоту, поэтому их нужно рисовать столбцами, а не рядами.
Я прохожусь по виджетам и аннотирую их colno, а затем отправляю это в шаблон. во время первоначальной разработки я просто прохожусь по ним всем в шаблоне и теперь хочу сделать это немного более эффективным.
Я бы ожидал от 15-20 виджетов на страницу.
В шаблоне на данный момент у меня есть:
<div class="column">
{% for widget in widgets %}
{% if widget.colno == 1 %}
{% include 'widget.html' %}
{% endif %}
{% endfor %}
</div>
<div class="column">
{% for widget in widgets %}
{% if widget.colno == 2 %}
{% include 'widget.html' %}
{% endif %}
{% endfor %}
</div>
<div class="column"> etc </div>
Очевидно, что это не самый эффективный способ сделать это. Интересно, есть ли лучшие способы сделать это:
a) Выполните итерацию в представлении и назначьте виджеты словарям на основе их colno. Затем выполнить итерацию в шаблоне. - Я попробовал этот подход, и на самом деле он кажется медленнее, чем оригинальный подход, что меня удивило.
b) при создании/редактировании приборной панели сохранять var для "column_widget_count", затем зацикливать, используя эти счетчики (это может быть сложно для обновления)
c) какой-то другой сексуальный подход к шаблонам/тегам Django, о котором я не знаю
Следует также отметить, что я сортирую виджеты в порядке колонки, а затем в порядке внутри колонки.
Надеюсь, это имеет смысл! Будьте здоровы!