我有一个具有以下架构的django应用程序:
skeleton/
assets/
sass/
static/
css/
templates/
base.html
settings/
common.py
dev.py
prod.py
apps/
views.py
// ...
我有一个gulpfile.js
脚本,可以将所有sass编译成skeleton/static/css/desktop.css
,并且我的模板中有skeleton/templates/base.html
:
<!DOCTYPE html>
<html>
<head>
{% load compress staticfiles %}
{% block css %}
{% compress css %}
<link href="{% static "css/desktop.css" %}" type="text/css" rel="stylesheet">
{% endcompress %}
{% endblock %}
</head>
...
我的设置是:
# common.py
STATIC_ROOT = normpath(join(DJANGO_ROOT, 'static'))
STATIC_URL = '/static/'
INSTALLED_APPS = (
...
'compressor',
...
)
COMPRESS_ENABLED = True
COMPRESS_OUTPUT_DIR = 'CACHE'
此文件由prod
和dev
导入:
# prod.py
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE = 'apps.core.storage.CachedS3BotoStorage'
STATIC_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
和
# dev.py
DEBUG = True
COMPRESS_ENABLED = True
我已关注using-staticfiles guide并实施了CachedS3BotoStorage
(代码完全相同)。
在本地它可以正常工作,但是一旦我尝试将它推送到heroku,编译就会失败:
CommandError:渲染skeleton / templates / base.html时发生错误:无法通过COMPRESS_URL('https://XXX.amazonaws.com/css/desktop.css')访问“https://XXX.amazonaws.com/”并且无法压缩
我丢失了,文件https://XXX.amazonaws.com/css/desktop.css
是否存在(即如果我尝试直接访问它,我得到了文件),但不知怎的,压缩语句不起作用。
我认为添加CachedS3BotoStorage
文件存储会有所帮助,但显然它没有。
我该怎么做才能解决这个问题?
注意:我只包含了最少量的代码/配置,希望能够提供上下文,但如果其他任何有意义的话我会添加它。