многоразовый код шаблона django

Так что, разрабатывая свой проект, я думаю, что, должно быть, делаю что-то не так. Некоторые фрагменты кода шаблона можно использовать повторно, поэтому мне хочется извлечь код из шаблона, но я не могу найти хороший способ. Например, некоторые кнопки имеют одинаковый дизайн на всем сайте. Как лучше всего извлечь его со страницы? Здесь я рассмотрел использование простых тегов включения или включаемых файлов.

Теперь все в порядке, за исключением того, что я очень озабочен оптимизацией скорости. Проведя тесты, я обнаружил, что использование простых тегов на 50% медленнее, чем обычное встроенное создание шаблонов, а теги включения более чем на 350% медленнее. Это вызывает беспокойство, потому что некоторые фрагменты кода, которые дублируются, находятся в местах, предназначенных для зацикливания списка. Так, например, при отображении списка элементов у меня есть фрагмент кода для голосования за / против, который дублируется по всему сайту. Если я использую что-то вроде тега включения, это добавит много тяжелой работы сайту. Есть ли лучший способ сделать все это?

Если я стремлюсь к скорости, должен ли я пойти на компромисс с DRY, чтобы сделать вещи быстрее?


person killerbarney    schedule 29.01.2010    source источник


Ответы (1)


Используйте все, что мешает вам повторяться. Я фанат включения тегов для таких вещей, как кнопки.

Если вы строите ради скорости, используйте структуру кеширования Django, чтобы избежать выполнять одну и ту же работу снова и снова, особенно глядя на шаблон кеширование фрагментов.

person Dominic Rodger    schedule 29.01.2010
comment
Точно. Это преждевременная оптимизация. Маловероятно, что система шаблонов действительно станет узким местом; что еще более важно, вы еще не знаете, так ли это. Таким образом, вы будете создавать менее удобные в обслуживании шаблоны, чтобы оптимизировать то, о чем вы даже не подозреваете, что нужно оптимизировать. Кроме того, Django 1.2 добавляет кеширование загруженных шаблонов, что может существенно снизить снижение производительности. - person Carl Meyer; 29.01.2010
comment
спасибо, ребята, я думаю, вы абсолютно правы. Карл, я думаю, твой комментарий очень показателен. Я думаю, что зациклился на неправильных вещах. Спасибо за внимание :) - person killerbarney; 30.01.2010