Я пытаюсь сделать работу django compress, но я считаю, что это не работает из-за моего использования {% static %}
.Сделать Django compress с {% static%}
Мой шаблон (я использую pyjade, но не имеет значения):
- load staticfiles
- load compress
| {% compress css %}
link(rel="stylesheet", href="{% static 'less/bootstrap.css' %} ")
link(rel="stylesheet", href="{% static 'timepicker/css/bootstrap-timepicker.min.css'%}")
link(rel="stylesheet", href="{% static 'leaflet/addons/locatecontrol/L.Control.Locate.css' %} ")
link(rel="stylesheet", href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css")
link(href='//api.tiles.mapbox.com/mapbox.js/v1.3.1/mapbox.css', rel='stylesheet')
| {% endcompress %}
И часть моего settings.py:
PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, '../static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'media'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = "staticfiles.storage.StaticFileStorage"
INSTALLED_APPS = (....,'compressor',....)
Даже если я $ python manage.py collectstatic
компресс не работать и выплескивать исходные файлы. В docs it says я должен предоставить абсолютный путь, который, как я думаю, дал, не так ли? Может ли кто-нибудь помочь сжимать работу? Благодарю. (Я не очень хорошо знаком с статическими файлами django).
Update
Выполнив комментарий Тимми я позволил COMPRESS_ENABLED = True
(и DEBUG=False
) в настройках, она по-прежнему необходимо найти файлы:
UncompressableFileError at/
'less/bootstrap.css ' could not be found in the COMPRESS_ROOT '/Users/diolor/mysite/wsgi/static' or with staticfiles.
Просто отметить, что статические файлы правильно найдены и отобраны (когда COMPRESS_ENABLED = False
).
Моя структура:
mysite/
wsgi/
myapp/
settings.py
manage.py
media/
#js & css files
static/
[...]
Поиграв некоторое время он выглядит как компресс имеет проблемы с CSS и {% static %}
.
Если у вас есть link(rel="stylesheet", href="/static/less/bootstrap.css")
это greaty сжимает таблицу стилей, на link(rel="stylesheet", href="{% static 'less/bootstrap.css' %} ")
это вызывает ошибку.
на JS, он делает это хорошо: script(type="text/javascript", src='{% static "bootstrap/js/bootstrap.min.js" %}')
Компрессор будет работать только в том случае, если 'DEBUG = False' или, в частности, с настройкой' COMPRESS = True'. –
@ TimmyO'Mahony Спасибо, ты прав. Не могли бы вы проверить обновление? – Diolor