Как реализовать части или компоненты Symfony в Django?

Я довольно долго разрабатывал в среде Symfony, но теперь мне приходится работать с Django, и у меня возникают проблемы с созданием чего-то вроде «компонента» или «частичного» в Symfony.

Тем не менее, вот моя цель:

У меня есть веб-страница с множеством небольших виджетов, всем им нужна своя логика, расположенная, я думаю, в «views.py». Но как мне сказать Django, чтобы он вызывал всю эту логику и отображал ее как одну веб-страницу?


person Konrad 'ktoso' Malawski    schedule 07.11.2009    source источник


Ответы (2)



Предполагая, что вы собираетесь использовать компоненты в разных местах на разных страницах, я бы предложил попробовать {% include "foo.html" %}. Один из (несколько) недостатков языка шаблонов Django заключается в том, что в нем нет понятия макросов, поэтому вам нужно быть очень последовательным в именах значений в контексте, который вы передаете в свой основной шаблон, чтобы включенный шаблон находил то, что он находясь в поиске.

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

Мне не нравится ни один из этих подходов. Чем сложнее становится ваш шаблон, тем больше вы можете захотеть взглянуть на Jinja2. (И нет, я не верю Django Party Line о «дизайнерах шаблонов» — никогда в жизни не видел ни одного.)

person Peter Rowell    schedule 07.11.2009