試圖部署Django應用程序到Heroku使用whitenoise和django壓縮機。Whitenoise和Django壓縮器導致404壓縮文件
通過DEBUG = False
和COMPRESS_ENABLED = True
將其部署到生產環境中,可以毫無問題地訪問我的所有靜態資產。然而,所有的壓縮文件返回404,如:
HTTP://*.herokuapp.com/static/CACHE/css/fbfaa35dc638.css未能 加載資源:服務器的狀態爲迴應404(未找到)
要麼使DEBUG
或禁用COMPRESS_ENABLED
解決問題,當然不是我想要的。
我也在設置STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
,但改變這並沒有幫助。
某些設置(注意我有例如base.py
,local.py
,等等。這就是爲什麼我需要的路徑額外../
一個設置目錄):
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '../staticfiles')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, '../static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
在我的基本模板:
{% compress css %}
<link rel="stylesheet" href="{% static 'css/app.css' %}">
{% block css %}{% endblock %}
{% endcompress %}
[...]
{% compress js %}
<script src="{% static 'js/main.js' %}"></script>
{% block js %}{% endblock js %}
{% endcompress %}
同樣,將它們移出壓縮塊可以解決問題。只是找不到壓縮的文件。
任何想法?
編輯
我忘了提一個設置我加爲每deployment checklist,即這樣的: https://docs.djangoproject.com/en/1.8/ref/templates/api/#django.template.loaders.cached.Loader
TEMPLATES[0]['OPTIONS']['loaders'] = [
(
'django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]
),
]
刪除此設置又使得網頁的工作。然而,JS和CSS文件沒有被壓縮......發生了什麼事?
我有像你這樣的確切問題,但不是在Heroku上。我使用django cookiecutter項目,但問題是相同的。 「CACHE」文件夾中的任何文件都會返回一個404.任何想法爲什麼? –