Вопрос

Допустим, у меня есть 3 приложения Django, приложение Страна, приложение Социальное и приложение Финансовый.

Country — это приложение для навигации.В нем перечислены все страны в «индексном» представлении, а в «подробном» представлении показаны сведения о каждой стране.

Сведения о каждой стране включают ее социальные данные (из социального приложения) и финансовые данные (из финансового приложения).

Социальные и финансовые возможности имеют подробное представление (для каждой страны).

Есть ли элегантный способ «подключить» эти подробные представления к основному подробному представлению, предоставляемому странами?Таким образом, для каждой страницы сведений о стране я бы увидел две вкладки, показывающие социальные и финансовые данные этой страны.

Это было полезно?

Решение

2 распространенных решения, которые я использую для этой проблемы:

Частичные шаблоны:
Создайте шаблон для рендеринга «социальных» и «финансовых», который не нуждается в чем-либо из представления, кроме объекта, над которым он работает (и использует функции объектов или теги шаблона для его рендеринга).тогда вы можете легко {% включить %} (и сначала установить необходимую переменную).
Это частичное представление отображает не всю HTML-страницу, а только один DIV или какой-либо другой элемент HTML, который вы хотите использовать.Если вам также нужна страница «только для социальных сетей», вы можете создать страницу, которая отображает заголовок, а затем включает частичный шаблон.Вы можете использовать соглашение типа _template.html для частичного шаблона и template.html для обычного шаблона.

АЯКС:
Сделайте так, чтобы ваши «социальные» и «финансовые» представления были вызваны в XMLHTTPRequest (request.is_ajax()).Если да, то они возвращают только элемент DIV без всего HTML вокруг него.Таким образом, ваша главная страница может отображаться без нее и добавлять этот контент на лету.
Способ AJAX имеет ряд преимуществ:вы не отображаете представления плагина по тому же запросу, что и всю страницу, поэтому, если у вас много таких представлений плагина, главная страница будет загружаться быстрее, и вы можете использовать умный JavaScript, выбирающий только соответствующие представления плагина для запроса. .
Кроме того, вы можете использовать обычное представление для создания необходимых данных в шаблоне (чего невозможно сделать в методе частичных шаблонов).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top