Можно ли предотвратить перезагрузку базового шаблона с помощью наследования шаблонов в django? - PullRequest
1 голос
/ 29 июня 2010

В области заголовка моего базового шаблона (main.html) я разместил медиаплеер HTML5, который загружает контент, загруженный через мой интерфейс администратора.

То, что я пытаюсь сделать, это то, что, когда дорожки были загружены один раз, медиаплеер не будет затронут внутренней навигацией по сайту.Другими словами, медиаплеер продолжает воспроизводиться, но пользователь может просматривать сайт, не прерывая воспроизведение / повторную загрузку треков.

Это довольно простая настройка.Есть один основной шаблон, и каждый из других разделов (скажем, блог, контакт и о) все блоки контента, загруженные в этот же шаблон, используя:

{% extends 'main.html' %}

Как я понимаю, когда система шаблонов оцениваетдочерний шаблон, сначала он загружает родительский, а затем заполняет дочерние блоки, как определено.Я логически, и, возможно, неправильно, предположил, что дочерние блоки будут «втянуты» в родителя.Однако, прочитав django docs по наследованию шаблонов, может показаться, что на самом деле происходит некий обратный поиск: find parent> load parent> find blocks> заполнить блоки.Как я настроил в данный момент, каждый раз, когда нажимается ссылка, медиа перестает воспроизводиться и перезагружается.

Поэтому мой вопрос заключается в том, упустил ли я что-то фундаментальное из того, как работает шаблонизатор djangoи возможно , чтобы достичь того, что я имею, просто используя механизм шаблонов, или это невозможно, и мне нужно сделать это другим способом (например, через AJAX).Я впервые пытался сделать что-то подобное в Django, поэтому я не удивлюсь, если это первое.

1 Ответ

2 голосов
/ 29 июня 2010

То, что я пытаюсь сделать, это то, что, когда дорожки были загружены один раз, медиаплеер не будет затронут внутренней навигацией по сайту.Другими словами, медиаплеер продолжает воспроизводиться, но пользователь может просматривать сайт, не прерывая воспроизведение / повторную загрузку треков.

Это не что-то специфическое для Django-шаблонов, а скорее как вашHTML-страница структурирована.Медиаплеер не заменяется в Django, но заменяется в браузере путем перезагрузки страницы.

Что вы можете сделать:

  • Все работает через Ajax.
  • Все остальные страницы должны выполняться в <iframe>
  • Все остальные страницы должны выполняться в теге <frameset>.

Проще, URL в адресной строке не будетизменить больше, пока пользователь перемещается по сайту.Требование Ajax также повлияет на то, насколько хорошо Google сможет проиндексировать ваш сайт.

Хорошая книга HTML поможет вам настроить страницу на основе frameset / iframe.

...