4

我試圖讓Django壓縮工作,但我相信它不工作,因爲我的{% static %}使用。使Django與{%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的靜態文件不是很熟悉)。


更新

以下蒂米的評論我啓用了設置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" %}')

+2

Compressor只有在'DEBUG = False'或具體設置爲'COMPRESS = True'時才能工作。 –

+0

@ TimmyO'Mahony謝謝你,你是對的。你能查看更新嗎? – Diolor

回答

8

的問題是,你必須在你的HREF的後面加上一個空格,%}"之間。如果仔細查看錯誤消息,您會看到壓縮器正在尋找一個末尾具有空格的文件。 (小冊子樣式表上的內容也是如此)

+0

你救了我的一天哥們! –

+0

你救了我,謝謝 –