Какое наилучшее решение передать {{STATIC_URL}} в файлы javascript?
Я работаю с django и python.
Спасибо заранее. С наилучшими пожеланиями.
Какое наилучшее решение передать {{STATIC_URL}} в файлы javascript?
Я работаю с django и python.
Спасибо заранее. С наилучшими пожеланиями.
django-compressor
позволяет вам делать это, а также оптимизировать свой сайт, объединяя все необходимые JS или CSS в один файл и оптимизируя размер файла.
UPDATE: По умолчанию компрессор преобразует относительные URL-адреса в абсолютные 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 }}');
Вы попросили лучшего способа - я думаю, что это самое лучшее. Конечно, лучше, чем обслуживать динамические файлы.
Использование глобальной переменной 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">';
Я думаю, что это дополняет комментарий @Yuji 'Tomita' Tomita, как полная настройка.
это сработало для меня.
Вот как я сделал полную настройку компрессора django для использования STATIC_URL в файле django js.
https://github.com/jezdez/django_compressor
pip install django_compressor
Добавьте "компрессор" к настройке INSTALLED_APPS:
INSTALLED_APPS = (
# other apps
"compressor",
)
Чтобы проверить сжатие в режиме отладки, в settings.py:
COMPRESS_ENABLED = True
Если вы используете приложение janos staticfiles contrib (или его автономные копии django-staticfiles), вам нужно добавить поиск файлов Django Compressors в параметр 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 }}');