我正试图将我的Django应用程序部署到Heroku。所有静态文件都由whitenoise
提供,并且已成功迁移。但是,我该如何在生产环境中显示使用ImageField
上传的媒体文件。
我的settings.py
STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/Sak/mpro/feat/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mpro.settings")
application = get_wsgi_application()
try:
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
from dj_static import Cling
application = Cling(get_wsgi_application())
except:
pass
urls.py
urlpatterns = [
url(r'^', include('feat.urls', namespace="feat")),
url(r'^admin/', include(admin.site.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我所有的媒体文件都上传到base_dir/media/media
,当whitenoise
收集静态文件时,它只会收集STATIC_ROOT
中的文件,那我该如何部署我的媒体文件呢?当我运行heroku run ls
时,我可以看到媒体文件夹。
instance.image.path
分配为某些脚本中直接指向它们。路径应相对于MEDIA_ROOT
。 - spectras