我想这是一个安全问题。即使“ whitenoise”可以很好地在生产环境中提供真正的静态文件,也不能提供媒体文件。
# Don't place your 'media' files IN your 'static' file like this :
MEDIA_ROOT = os.path.join(BASE_DIR, 'wt/static/media/')
永远不必放在项目的“静态”文件中(即使您可以使其在某些方面起作用,但我认为这不是一个好习惯)。
必须在Django项目之外提供。我读过某个地方,我们必须使用CDN。首先,我选择CloudFlare(因为它是免费的),但是它不能正常工作,因为您需要一个子域/主机名来指向MEDIA_ROOT,而Cloudflare却没有这样做。最后,我选择Amazon S3。
因此,总而言之,写类似的东西{% static img.thumbnail.url %}
是没有意义的。因为通过管理员/用户上传的所有内容都不必处于“静态”状态。
使用{{ img.thumbnail.url }}
代替。