Как я могу поместить блок динамически сгенерированного контента в шаблон django?

StackOverflow https://stackoverflow.com/questions/1024220

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Решение

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

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

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

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

  • Другие советы

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

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

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

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

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