【问题标题】:runserver can't serve media if MEDIA_URL is within STATIC_URL如果 MEDIA_URL 在 STATIC_URL 内,runserver 无法提供媒体
【发布时间】:2020-04-15 14:01:31
【问题描述】:

我的配置如下:

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.

我理解错误。我的问题是“为什么不”?您有充分的理由希望 media 作为 static 的子目录。

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

【问题讨论】:

  • 如果发行说明中没有解释,您可能会更幸运地询问做出更改的人。
  • 这是一个检查,仅当您处于此票证中所述的开发模式时才会发生(以及引用的拉取请求:code.djangoproject.com/ticket/29570

标签: django django-staticfiles


【解决方案1】:

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

同时引用#15199: Allow MEDIA_ROOT inside STATIC_ROOT

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

所以基本上,你可以:

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

【讨论】:

  • 我无法测试 pwa
猜你喜欢
  • 2015-03-19
  • 2012-09-03
  • 2012-12-03
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2020-12-31
相关资源
最近更新 更多