Как я могу поместить блок динамически сгенерированного контента в шаблон django? - PullRequest
0 голосов
/ 21 июня 2009

Я хочу включить в шаблоны django такие вещи, как статус твиттера или вкусные теги.

Эти вещи динамичны, но регулярны. Как это будет сделано?

Ответы [ 3 ]

4 голосов
/ 22 июня 2009

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

  1. Переменная контекста шаблона : в ответ на вопрос Алекса вы можете поместить свое содержимое в переменную контекста, которая включена в контекст каждого шаблона, созданного каждым представлением. Django даже предоставляет механизм для этого автоматически, называемый контекстный процессор . Плюсы: очень просто. Минусы: не будет динамически обновлять новый контент в клиентских браузерах.

  2. Динамическая загрузка AJAX : как уже упоминалось Алексом и Дейвом, вы можете динамически загружать свой контент, используя методы AJAX. В качестве примера использования jQuery вы должны поместить в шаблон местозаполнитель, например <div id="twitterfeed"></div>, а затем в блок javascript в шаблоне, вставив $("#twitterfeed").load("{% url twitterfeed %}");, где twitterfeed - это URL-адрес, названный в вашем urls.py Плюсы: будут динамически обновлять браузеры. Минусы: может быть сложно, если вы не знаете Javascript.

  3. тег включения : Django предоставляет тип тега шаблона, называемый тег включения , который в основном представляет собой пользовательский тег шаблона, который может отображать динамический контент. В некотором смысле это похоже на переменную контекста, за исключением того, что ваш код для генерации контента будет вызываться только тогда, когда вы используете пользовательский тег шаблона в своем шаблоне вместо вызова для каждого представления. Еще одним преимуществом является то, что контент генерируется из собственного шаблона. Конечно, вы можете сделать это с помощью обычной контекстной переменной, но она не так чиста (IMHO), как использование тега включения. Плюсы: очень просто, чисто. Минусы: не будет динамически обновлять новый контент в клиентских браузерах.

1 голос
/ 21 июня 2009

Обычный метод - оставить заполнитель div в сгенерированном контенте, а затем заполнить div на стороне клиента с помощью вызова AJAX из Javascript, который вы включаете в страницу.

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

1 голос
/ 21 июня 2009

Самый простой подход - использовать {{ mycontent }} в вашем шаблоне (где вы хотите, чтобы динамически генерируемый контент появлялся) и поместить соответствие между mycontent и его значением в контексте, который вы используете для рендеринга шаблона - т.е. самая фундаментальная часть шаблонов Джанго.

Если вы имеете в виду, что вам нужна поддержка Ajax, благодаря которой Javascript на странице постоянно обновляет такое содержимое в соответствии с тем, каким сервер хочет, чтобы это было в любой момент времени, я предлагаю изучить dojango , Dojo. / Интеграционный проект Django - он еще не настолько развит, как каждый из Dojo и Django, сам по себе (пока не версии 0.4), но он уже пригоден для использования и полезен.

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