我正在努力让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的静态文件不是很熟悉。)
更新
在关注Timmy的评论后,我在设置中启用了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")
它很棒压缩样式表
link(rel="stylesheet", href="{% static 'less/bootstrap.css' %} ")
它引发了错误。
在js上,它渲染得很好:script(type="text/javascript", src='{% static "bootstrap/js/bootstrap.min.js" %}')
答案 0 :(得分:9)
问题是你的href末尾有一个空格,在%}
和"
之间。如果仔细查看错误消息,您将看到压缩器正在查找末尾有空格的文件。 (传单样式表上的内容相同。)