我試圖讓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" %}')
Compressor只有在'DEBUG = False'或具體設置爲'COMPRESS = True'時才能工作。 –
@ TimmyO'Mahony謝謝你,你是對的。你能查看更新嗎? – Diolor