cpu*_*ury 2 python django heroku django-compressor
尝试使用whitenoise和django-compressor将Django应用程序部署到Heroku .
使用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',
)
Run Code Online (Sandbox Code Playgroud)
在我的基本模板中:
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
再次,将它们移出压缩块可以解决问题.只是压缩文件无法找到.
有任何想法吗?
编辑
我忘了提及我根据部署清单添加的一个设置,即: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',
]
),
]
Run Code Online (Sandbox Code Playgroud)
删除此设置会使页面再次运行.但是,JS和CSS文件没有被压缩......发生了什么?
编辑2
这不是Heroku上使用的Django静态文件的副本(使用whitenoise):
这似乎是一个已知问题.
根据Squebe的说法 - "Compressor的在线模式不适用于Heroku,因为Whitenoise只在加载应用程序时检查静态文件夹(请参阅我对问题#680的评论).在生产中使用压缩器我认为你需要在离线中使用它模式并在使用Heroku的post编译钩子加载应用程序之前运行python manage.py compress."
| 归档时间: |
|
| 查看次数: |
1241 次 |
| 最近记录: |