4

Я пытаюсь сделать работу 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 = TrueDEBUG=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" %}')

+2

Компрессор будет работать только в том случае, если 'DEBUG = False' или, в частности, с настройкой' COMPRESS = True'. –

+0

@ TimmyO'Mahony Спасибо, ты прав. Не могли бы вы проверить обновление? – Diolor

ответ

8

Проблема заключается в том, что у вас есть пространство в конце вашего HREF, между %} и ". Если вы внимательно посмотрите на сообщение об ошибке, вы увидите, что компрессор ищет файл с пробелом в конце. (То же самое на листе стилей буклета.)

+0

Ты спас мой день чувак! –

+0

Ты спас меня, спасибо –