#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.