【问题标题】:Issue with Static Django files on HerokuHeroku 上的静态 Django 文件问题
【发布时间】: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


【解决方案1】:

当 'static' 目录位于 Django 项目目录中时,可以识别静态文件,不幸的是,该目录与整个 Django 目录同名。两者都被称为“数学项目”。

我也设置了,

$ heroku config:set DISABLE_COLLECTSTATIC=1

这对我有用。

【讨论】:

  • 嗨,Shane,我想我正面临着和你一样的问题,而且我在数小时后不知所措。什么最终为你解决了这个问题?你改变你的根文件夹名称了吗?
  • 那是两年前的事了,我不记得我做了什么对不起。
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2020-11-06
  • 2015-12-15
  • 2021-06-03
  • 2023-03-20
  • 2014-06-08
相关资源
最近更新 更多