Вопрос

Я очень новичок в Jinja2 и использование шаблонов в целом, поэтому мне было интересно, есть ли простой способ загрузить внешний JavaScript. Я думал об использовании:

{% block javascript %}
    <script src="myscript.js"></script>
{% endblock %}

Но я не могу помочь спросить:

Есть ли способ загрузки этого сценария непосредственно из Директивы шаблона?

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

Решение

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

Второй способ - использовать Jinja2 include Функция:

{% block javascript %}
    <script type="text/javascript">
        {% include "myscript.js" %}
    </script>
    <!-- The contents of myscript.js will be loaded inside the script tag -->
{% endblock %}

Преимущество использования include Это то, что jinja2 будет обработать ваш JavaScript перед его включением - что означает, что вы можете иметь переменные в вашем JavaScript, что изменяется в зависимости от состояния вашей программы.

Недостатком использования include Таким образом одинаково - ваш .js Файл будет запущен через jinja2, прежде чем быть отправленным - если вы не используете динамический контент, вы просто будете обработать файл без необходимости для каждого запроса - и если вы используете библиотеку шаблонов шаблонов Jinja2 с синтаксисом Jinja2, то проблема, скорее всего.

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

Этот вопрос довольно старый, но есть еще один способ сделать это, что может быть интересно. Я нашел это во время работы с Jinja2. а также колбы.

Я использовал url_for() И это работает нормально:

{% block javascript %}
    <script src="{{ url_for('static',filename='myscript.js') }}"></script>
{% endblock %}

И у меня есть мой myscript.js в моей статической папке. Указано в среде Jinja2 или по умолчанию в колбе.

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