Загрузите несколько шаблонов в базовый шаблон в django по нажатию кнопки - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть несколько приложений (app1.html, app2.html и т. Д.) И base.html, который имеет (скажем так) 4 заполнителя.Теперь я хочу включить пользователя, нажав на один из заполнителей, чтобы выбрать из этих приложений и загрузить их в этот заполнитель.Вот простой пример с js для большей ясности: https://jsfiddle.net/eja4t0gb/15/

HTML:

  <body>
    <div id="module-1" class="">
      This is module 1.
      <button id="load-1">Load Module</button>
    </div>
    ---
    <div id="module-2" class="">
      This is module 2.
      <button id="load-2">Load Module</button>
    </div>
    ---
    <div id="module-3" class="">
      This is module 3.
      <button id="load-3">Load Module</button>
    </div>
    ---
    <div id="module-4" class="">
      This is module 4.
      <button id="load-4">Load Module</button>
    </div>
    --- ---
    <div id="chooser">
      Choose an App.
      <button id="app-1">App-1</button>
      <button id="app-2">App-2</button>
      <button id="app-3">App-3</button>
      <button id="app-4">App-4</button>
    </div>
  </body>
</html>

Javascript:

var chosenModule = null;
document.getElementById("chooser").style.display = "none";

for (let i = 1; i <= 4; i++) {
  document.getElementById("load-" + i).addEventListener("click",
    function() {
      chosenModule = i;
      document.getElementById("chooser").style.display = "block";
    });
}

for (let i = 1; i <= 4; i++) {
  document.getElementById("app-" + i).addEventListener("click",
    function() {
      loadApp(i);
      document.getElementById("chooser").style.display = "none";
      document.getElementById("app-" + i).style.display = "none";
    });
}

function loadApp(i) {
  document.getElementById('module-' + chosenModule).innerHTML = "App" + i;
}

Вот мой вопрос: как бы я это реализовалс шаблонами django / Jinja2?

Теперь я видел этот пост: Django: загрузка другого шаблона нажатием кнопки , однако, цель состояла в том, чтобы загрузить совершенно новую страницу.С другой стороны, я хочу дополнительно загружать приложения со всеми их ресурсами только после нажатия кнопки, без перезагрузки самой страницы.Я знаю о {% include 'app.html'%}, но как я могу сказать base.html интерпретировать это только после нажатия кнопки / через код js?Или это «включить» неправильный подход здесь?

1 Ответ

0 голосов
/ 22 февраля 2019

На самом деле шаблоны Django работают по протоколу HTTP, который не имеет состояния .Это означает, что вы не можете получить другой шаблон после его рендеринга! Но вы можете использовать ajax-запрос для получения шаблона django из вашего веб-приложения.

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