为什么不应该在 Django 的生产级别使用 MEDIA_ROOT 和 MEDIA_URL?

Why should you not use the MEDIA_ROOT and MEDIA_URL in the production level of Django?

我正在尝试找到我发布的问题名称的答案,但我似乎找不到答案。

我一直在看 Django 的几个教程,他们一直告诉我当你处于生产级别时,你不应该使用 MEDIA_URL 和 MEDIA_ROOT 类型的约定姜戈。

但这是为什么呢?有具体原因吗?

尤其是那些变量没有任何问题。事实上,您永远不想在生产环境中使用 Django 的开发服务器提供静态文件,这既是因为性能问题,也是因为安全问题。

开发服务器非常有用,因为它允许您在开发期间只使用 Django 来提供静态文件和媒体文件,但无论如何它都不是生产 Web 服务器(例如 Nginx)。

文档一如既往地有用:https://docs.djangoproject.com/en/3.1/howto/static-files/#serving-uploaded-files-in-development

适用于静态文件的内容也适用于媒体文件。关于静态文件部署的策略,there's a whole page on the docs too.

一些包,如 Whitenoise,在生产中处理静态文件时有帮助,但 Whitenoise 不能用于媒体 (user-uploaded) 静态文件(因为它大致在开始时发现静态文件)。