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

问题描述

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

我一直在看Django中的一些教程,它们一直告诉我,在Django的生产级别上,您不应使用MEDIA_URL和MEDIA_ROOT类型的约定。

那为什么呢?有具体原因吗?

解决方法

这些变量没有什么特别的。事实是由于性能和安全性问题,您永远不想在生产环境中使用Django的dev服务器提供静态文件

开发服务器非常有用,因为它允许您在开发过程中仅使用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不能用于媒体(用户上传的)静态文件(因为它大概会在启动时发现静态文件)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...