Передача STATIC_URL в файл javascript с помощью django - PullRequest
19 голосов
/ 06 марта 2012

Какое наилучшее решение для передачи {{STATIC_URL}} в файлы JavaScript?

Я работаю с django и python.

Спасибо заранее. Привет.

Ответы [ 3 ]

36 голосов
/ 14 октября 2012

Использование глобальной переменной javascript со статическим значением url более просто:

<script language="javascript">var STATIC_URL = "{{ STATIC_URL|escapejs }}";</script>
<script src="{{ STATIC_URL }}js/myfile.js"></script>

Затем вы можете просто использовать статический URL, вызвав STATIC_URL в myfile.js:

html = '<img src="'+STATIC_URL+'/icons/flags/tn.gif">';
19 голосов
/ 06 марта 2012

django-compressor позволяет вам сделать это, а также оптимизировать ваш сайт, сжимая все необходимые JS или CSS в один файл и оптимизируя размер файла.

ОБНОВЛЕНИЕ: По умолчанию компрессор преобразует относительные URL-адреса в абсолютные, используя STATIC_URL. Если вы загружаете версию для разработки, она поставляется с парсером шаблонизатора django, который позволяет вам использовать весь код шаблона django непосредственно в ваших CSS-файлах, например, тег {% static %}.

https://github.com/jezdez/django_compressor

Включите TemplateFilter в settings.py после установки, чтобы анализировать файлы js или css через механизм шаблонов.

COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]

Теперь любой JS в {% compress js %} блоках будет анализироваться языком шаблонов django ...

{% compress js %}
    <script src="/my_script.js" type="text/javascript"></script>
{% endcompress %}

// my_script.js
alert('{{ STATIC_URL|escapejs }}');

Вы просили лучший способ - я думаю, что это лучший. Конечно, лучше, чем обслуживать динамические файлы.

5 голосов
/ 06 октября 2014

Я думаю, что это дополняет комментарий @Yuji 'Tomita' Tomita, как полная настройка.

это сработало для меня.

Вот как я это сделалполная настройка компрессора django для использования STATIC_URL в js-файле django.

https://github.com/jezdez/django_compressor

pip install django_compressor

Добавить «компрессор» в настройку INSTALLED_APPS:

INSTALLED_APPS = (
    # other apps
    "compressor",
)

Чтобы проверить сжатие в режиме отладки, в файле settings.py:

COMPRESS_ENABLED = True

Если вы используете приложение contribfjs для Django (или его автономный аналог django-staticfiles), вам необходимо добавить средство поиска файлов Django Compressor в настройку STATICFILES_FINDERS.Например, с помощью django.contrib.staticfiles:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # other finders..
    'compressor.finders.CompressorFinder',
)

Включите TemplateFilter в settings.py после установки, чтобы проанализировать файлы js или css через механизм шаблонов.

COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]

Сейчаслюбой JS в блоках {% compress js%} будет проанализирован языком шаблонов django ...

{% load compress %}

{% compress js %}
    <script src="/my_script.js" type="text/javascript"></script>
{% endcompress %}

// my_script.js

alert('{{ STATIC_URL|escapejs }}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...