【问题标题】:Django static files not served on Heroku productionDjango 静态文件未在 Heroku 生产中提供
【发布时间】:2017-10-27 08:20:45
【问题描述】:

我有一个部署到 Heroku 的 django 网站。当我退出调试模式时,没有加载任何静态或媒体文件。我有一个包含图像的媒体文件夹并成功运行 collectstatic 并有一个包含许多文件的静态文件夹。以下是相关代码:

# settings.py
PROJECT_ROOT = dirname(dirname(abspath(__file__)))

MEDIA_URL = '/media/'
MEDIA_DIR = 'media'
MEDIA_ROOT = join(PROJECT_ROOT, MEDIA_DIR)

STATIC_URL = '/static/'
STATIC_DIR = 'static'
STATIC_ROOT = join(PROJECT_ROOT, STATIC_DIR)

# wsgi.py
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sitemoz.settings")

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)

【问题讨论】:

  • 你的PROJECT_ROOT 是什么?
  • 是PROJECT_ROOT = dirname(dirname(abspath(file)))
  • 好的,你的静态和媒体文件在你的项目包文件夹中...你试过PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))吗?
  • 两个静态文件夹(static 和 media)位于项目的根目录中。我刚刚尝试切换 PROJECT_ROOT 并且它给出了同样的错误。
  • 没办法。 dirname(dirname(abspath(file))) 解析 myproject settings.py 和其他文件在哪里?

标签: django heroku


【解决方案1】:

您必须更改静态根文件夹才能使您的设置生效。原因是你不能在同一个文件夹中使用Static FolderSTATIC_ROOT

【讨论】:

    猜你喜欢
    • 2017-12-30
    • 2018-09-25
    • 1970-01-01
    • 2011-08-11
    • 2012-12-03
    • 2015-06-19
    • 2016-12-10
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多