【发布时间】:2016-11-13 15:18:14
【问题描述】:
我已通过 Django 项目部署为 Heroku 应用程序,但无法让静态文件正常工作。
settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = 'static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
这正是Django and Static Assets推荐的内容
我已将 DISABLE_COLLECTSTATIC 设置为 false,
$ heroku config:set DISABLE_COLLECTSTATIC=0 --app mathsproject
文件系统是这样的,
这表明“静态”目录位于我的 Django 项目的根目录中。但我没有看到“staticfiles”目录在哪里?这应该在某个地方创建吗?
跑步时,
$ heroku 日志
我通常会收到显示静态文件丢失的错误。这在浏览器中也很明显。
......
2016-07-11T07:39:30.187273+00:00 app[web.1]: Not Found: /static/assets/js/jquery-1.10.2.min.js
2016-07-11T07:39:30.264037+00:00 app[web.1]: Not Found: /static/assets/img/4.png
2016-07-11T07:39:30.283627+00:00 app[web.1]: Not Found: /static/assets/img/testimonials/1.jpg
........
Whitenoise 已通过添加到 mathProject/wsgi.py 来启用
import os
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mathsProject.settings")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
我放在 settings.py 的底部
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
跑步
$ heroku run bash
然后,
$ python manange.py collectstatic --noinput
这给出了几行错误,最后一个是,
OSError: [Errno 2] No such file or directory: '/app/mathsProject/static'
但“mathsProject”中有一个“静态”目录
谢谢,
【问题讨论】:
-
所以您禁用了 collectstatic,但仍希望收集静态文件?为什么?
-
您是否关注了该文档页面的其余部分,即启用了 Whitenoise?
-
@DanielRoseman 我设置了 DISABLE_COLLECTSTATIC=0,我认为这意味着 disable_collectstatic 为假,因此启用了 collectstatic。
-
我关注了文档页面的其余部分并启用了白噪声。我现在将其添加到问题中。谢谢
-
我怀疑这些设置是这样工作的:它们通常用于设置环境变量,只要设置的存在就足以启用它。除非您需要,否则不要设置该值;现在,做
heroku config:unset DISABLE_COLLECTSTATIC。
标签: django heroku django-staticfiles