如果MEDIA_URL在STATIC_URL内,则runserver无法提供媒体

时间:2019-12-24 13:32:15

标签: django django-staticfiles

我的配置如下:

STATIC_URL = '/static/'
MEDIA_URL = '/static/media/'

自从我将django 2.1升级到2.2之后,我得到了:

"runserver can't serve media if MEDIA_URL is within STATIC_URL."
django.core.exceptions.ImproperlyConfigured: runserver can't serve media if MEDIA_URL is within STATIC_URL.

我了解错误。我的问题是“为什么不”?您有非常正当的理由想要将媒体作为静态子目录。

此外,在2.2版发行说明中,对这一重大更改的提及为零:https://docs.djangoproject.com/en/3.0/releases/2.2/

1 个答案:

答案 0 :(得分:0)

已针对此故障单#29570: Add check that MEDIA_URL is not inside STATIC_URL.发出了此警告。

也引用#15199: Allow MEDIA_ROOT inside STATIC_ROOT

在与jezdez进行进一步IRC讨论之后,关闭了该问题。支持在STATIC_ROOT中使用MEDIA_ROOT进行配置会导致静态文件与MEDIA_ *设置之间的许多其他复杂性和耦合,我们正在努力避免这种情况,而且尚不清楚它能为我们带来什么有意义的好处。提到的主要好处是在前端Web服务器上只需要一个别名:这似乎很小,因为别名例如nginx conf文件中只有一行。在任何情况下,都可以通过将MEDIA_ROOT和STATIC_ROOT并排放置在父目录中,并将前端Web服务器别名到该父目录来实现相同的结果。

所以基本上,您可以:

"/_cat/indices/organization"