Плагины Django Master-Detail View - PullRequest
       55

Плагины Django Master-Detail View

2 голосов
/ 12 февраля 2010

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

Страна - это приложение «главная навигация». Он перечисляет все страны в представлении «индекс» и показывает детали для каждой страны в представлении «детали».

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

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

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

1 Ответ

2 голосов
/ 12 февраля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...