0

我是 django 新手。我读过所有部署在生产环境中的 django 项目都应该通过 web 服务器(如 apache)提供媒体文件(上传)。我的问题是 -为什么会这样

有很多 PHP 框架 - 例如。symfony 1 和 2 - 不遵守规则。一旦您通过 Web 服务器使您的应用程序可以访问,您就不必根据您部署的环境进行任何更改。仅在DOCUMENT_ROOTWeb 服务器上进行了配置,并且此目录中的某处是上传目录 - 仅此而已。您可以确定没有人会访问 PHP、sql 文件等——这要归功于适当的框架架构和文档根目录。为什么它在 django 中有所不同?

编辑:此外,为不同的环境准备不同的代码(例如this)是一种非常糟糕的方法,因为您不能使用完全相同的代码在不同的环境中部署项目(并且链接中的代码仅对调试环境有意义.

4

1 回答 1

4

因为使用 PHP,您的代码是从 Web 服务器的公共目录以及静态和媒体文件提供的。因此,当您请求任何这些静态文件时,Web 服务器会直接为它们提供服务,而无需执行任何 PHP 代码。

在 Django 中,您的代码是单独运行的,所有请求都由 Django 中的 python 代码处理。这对于提供静态文件效率低下,服务效率更高,允许像 Apache 或 Nginx 这样的 Web 服务器直接为它们提供服务,而无需通过任何 python 代码。

于 2013-03-21T14:26:28.850 回答