heroku-django-如果DEBUG=False,则上传的图像不会显示

13 浏览
0 Comments

heroku-django-如果DEBUG=False,则上传的图像不会显示

我在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/'
#上传图片
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

0
0 Comments

问题的原因是在于使用了Whitenoise的静态文件查找器(static file finders),而在DEBUG=True时,Whitenoise会使用这个查找器来处理静态文件,因此问题很可能出在了静态文件收集(static file collection)的过程中。

解决方法是更新STATIC_ROOT和MEDIA_ROOT设置为推荐的方法,例如:

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

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

这样设置之后,静态文件和上传的图片就能正确显示了。

0