首页 > 解决方案 > 在生产 Django-Heroku 中找不到媒体文件:返回 404 错误

问题描述

我在 Djang 的媒体文件夹中有一些默认图像。但是,在我的网站上,我看不到正在显示的图像,并且出现 404 错误。

现在我的项目文件夹树是(项目名称是注册):

register
-- live-static
---- static-root
---- media-root
------ defaults

我的媒体和静态文件设置是:

STATIC_URL = '/static/'
STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'live-static', 'static-root')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'live-static', 'media-root')

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

在我urls.py的同一个文件夹中wsgi.py

urlpatterns = [ 
    """
    My other urls
    """ 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我的静态文件已加载,服务器可以检索它们,但是,我添加到我的文件夹中的图像media-root由服务器返回 404 错误。为什么会发生这种情况,因为我也已经设置STATICFILES_STORAGE了?

标签: pythondjangoheroku

解决方案


这是我第一次部署 Heroku 时就挂断的事情。由于 Heroku 项目在 dynos 上运行,如果在一定时间内没有请求,它们最终会进入休眠状态。当测功机重新启动时,它不会保存上传的数据。这是 Heroku 的一些信息的链接:https ://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted

我最终做的是设置一个 Amazon S3 存储桶来存储这些文件。Dennis Ivy 做了一个视频来解释如何做到这一点:https ://youtu.be/inQyZ7zFMHM


推荐阅读