【问题标题】:heroku-django-uploaded image is not displayed if DEBUG=False如果 DEBUG=False,则不显示 heroku-django-uploaded 的图像
【发布时间】:2017-02-05 23:38:38
【问题描述】:

我在 heroku 上部署了我的 Django 应用程序。除了显示图像外,一切正常。如果 DEBUG=False,则不会显示任何上传的图像。

settings.py

DEBUG = False

ALLOWED_HOSTS = ['salma-blog.herokuapp.com']

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_ROOT = os.path.dirname(myblog.__file__)+'/static/'
STATIC_URL = '/static/'

#upload images
MEDIA_ROOT= os.path.dirname(myblog.__file__)+'/static/myblog/images'
MEDIA_URL='/images/'

urls.py

urlpatterns=[
   ...
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我的模板中的图像标签

<img alt="img" src="/blog{{image}}"></a>

【问题讨论】:

  • 图像是否在本地 python django 服务器上显示为 DEBUG=FALSE ??
  • 不,在 heroku 服务器上
  • 所以您的意思是说,如果您的本地 python django 服务器使用 DEBUG=FALSE 但没有在 DEBUG=FALSE 的 Heroku 服务器上显示,则图像正在显示?或者它没有显示在任何地方,无论是heroku还是本地python Django服务器??
  • 无论我使用的是本地 python 服务器还是 Heroku 服务器,如果 DEBUG=FALSE,图像都不会显示
  • 提醒一下,如果您的存储库重量超过 300 MB(左右),您的图片将被自动删除。这一切都在他们的文档中。如果您有一个可以存储大量图像的应用程序,请考虑在您的 django 中使用 AWS S3。

标签: python django heroku


【解决方案1】:

Whitenoise 在DEBUG=True 时使用static file finders,因此您的静态文件收集过程很可能有问题。

将您的STATIC_ROOTMEDIA_ROOT 设置更新为推荐的方法,例如:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'images')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    相关资源
    最近更新 更多