onclick load {% включить’test.html ‘ %}

#javascript #jquery #python #flask #jinja2

#javascript #jquery #python #flask #jinja2

Вопрос:

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

  <div class="one"><a href="#one">One</a></div>
 <div class="two"><a href="#two">Two</a></div>
 <div class="three"><a href="#three">Three</a></div>
  

только после нажатия на один, я должен загрузить строку ниже:

 {% include 'one.html' %}
  

и после нажатия на два эта строка должна быть загружена:

 {% include 'two.html' %}
  

и так далее.
Как я могу справиться с этой проблемой? Динамическая загрузка содержимого при нажатии

Комментарии:

1. Имейте в виду, что JavaScript выполняется в браузере (клиенте) и, если я не ошибаюсь, Jinja2 — это настройка python, которая будет выполняться на сервере. Отображение строки шаблона с помощью JavaScript ничего не даст. Вам нужно будет либо загрузить все элементы при просмотре страницы, а затем отобразить их по щелчку, либо вам понадобится решение Ajax, которое будет извлекать результат шаблона и вставлять его по щелчку.

2. Спасибо, сэр, да, вы правы, я использую python-Flask, и это не позволяет реализовать этот метод. Единственное, что я хотел бы выполнить строку Jinja2 только как {% include ‘one.html ‘ %} при нажатии на div и, как вы сказали, я думаю, Agax может решить эту проблему. Спасибо

3. С удовольствием. Я предоставил немного более подробный ответ .

Ответ №1:

Имейте в виду, что JavaScript выполняется в браузере (на стороне клиента), в то время как Jinja2 — это шаблоны на основе python, которые будут создаваться на стороне сервера. Отображение строки шаблона с помощью JavaScript не приведет к желаемому результату. Кажется, есть два способа достичь того, чего вы хотите.

Одним из вариантов является вывод результата шаблона при начальной загрузке страницы, а затем отображение его с помощью некоторого поведения javascript. Для достижения этого результата существует множество плагинов jQuery, один из примеров, который вы можете посмотреть, — это вкладки начальной загрузки.

Другим вариантом, если вы не хотите выдавать все результаты шаблона при первой загрузке страницы, было бы загрузить результат шаблонов через ajax. В ajax-запросе должен быть предоставлен результат желаемого шаблона jinja2, который затем может быть выведен на вашу страницу. загрузка jQuery предоставляет простой способ сделать это.

Ответ №2:

Для достижения этого вам придется использовать некоторый JavaScript.

Одним из решений является использование jQuery loadhttp://api.jquery.com/load /

Комментарии:

1. Дорогой Камиль, спасибо за ваш ответ, но метод load здесь не работает, поскольку я использую python microframework Flask, и он не позволяет загружать HTML-документ по URL.