Шаблоны в шаблонах. Как избежать рендеринга дважды? - PullRequest
1 голос
/ 22 января 2009

У меня есть CMS, которая берет некоторый динамический контент и отображает его, используя стандартный шаблон. Однако теперь я использую теги шаблона в самом динамическом контенте, поэтому мне нужно сделать render_to_string, а затем передать результаты этого как переменную контекста в render_to_response. Это кажется расточительным.

Какой лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 22 января 2009

«Это кажется расточительным» Почему это так выглядит?

Каждый шаблон представляет собой сочетание тегов и текста. В вашем случае какой-то блок текста уже был посещен механизмом шаблонов. И что? После преобразования это просто текст и очень быстро проходит через следующий шаблонизатор.

У вас есть конкретные проблемы с производительностью? Вы не соответствуете требованиям к пропускной способности транзакции? Есть ли конкретная проблема?

Код слишком сложный? Это трудно поддерживать? Все время ломается?

Я думаю, что ваше решение адекватно. Я не уверен, что теги шаблонов в динамическом контенте хороши с точки зрения отладки, но с базовой точки зрения «рендеринга шаблонов» это хорошо.

0 голосов
/ 22 января 2009

То, что вы делаете, звучит нормально, но можно задать вопрос: почему бы не поместить ссылки тега шаблона непосредственно в ваш шаблон вместо того, чтобы вручную отображать их?

<div>
    {% if object matches some criteria %}
        {% render_type1_object object %}
    {% else %}
        {% render_type2_object object %}
    {% endif %
    ... etc ...
</div>

Или, еще лучше, иметь один центральный тег шаблона для рендеринга объекта (или списка объектов), который инкапсулирует отображение типов объектов в теги шаблона. Тогда все ваши шаблоны просто ссылаются на один тег шаблона, без знания типов в самих шаблонах.

Суть в том, что вы получаете знания о том, как визуализировать отдельные объекты из ваших представлений.

...