0

在开发时,django 可以通过更改来处理静态文件settings.py,我想处理这些静态文件不会花费太多资源。

但是当使用 将项目应用到生产环境mod_wsgi时,推荐的处理静态文件的方法是使用 apache 的配置文件来处理,甚至无法在 django 中处理静态文件。

那么为什么 django 不处理静态文件,至少给用户一个简单的方法呢?

4

3 回答 3

2

从性能的角度来看,您真的不希望 Django 提供静态文件。没有理由向 Django 实例发送请求,然后让 Python 返回文件,因为 Web 服务器自己执行此操作的速度要快得多。

于 2012-11-19T15:52:32.150 回答
1

Django 并不打算在生产中提供静态文件。

提供静态文件的 Django 代码是用于开发的,它并不意味着高性能甚至安全。

HTTP 服务器的主要用途是为静态文件提供服务,因此需要高性能和安全。Django 没有充分的理由干扰 HTTP 服务器和文件系统。

系统管理员需要配置安全且高性能的 HTTP 服务器。如果系统管理员不能做到这一点,这不是 Django 的错。

通过这样做,Django 遵守了几个 Unix 原则:

  • 简单法则:为简单而设计;只在必须的地方增加复杂性。
  • 简约法则:只有在证明没有其他方法可以做的时候才编写一个大程序。
  • 模块化规则:编写由干净接口连接的简单部分。
  • 分离规则:政策与机制分离;与引擎分离的接口。
  • 清晰法则:清晰胜于聪明。

ETC ...

Django 的 staticfiles 系统很棒,事实上很多人在它被包含到 django之前就已经在使用它了(参见 django-staticfiles 应用程序)。我相信任何愿意付出很少努力的人都可以完全理解它并发现它也很棒。我记得理解 django-staticfiles 对我来说有点困难,但那不过是一个爱情故事。

除了 url、模板、视图和模型之外,应用程序还可以通过创建一个“静态”子目录来嵌入静态文件。

如果你不明白 django 如何帮助你很好地处理静态文件,你可以试试这篇文章surviving django staticfiles

于 2012-11-19T15:51:56.157 回答
0

您可以使用它轻松地在生产中使用它

python manage.py runserver 0.0.0.0:80

并且该网站将像在开发中一样工作。再次,不建议这样做..但有效

在现实世界的情况下,出于多种原因,您更喜欢其他一些 Web 服务器来提供静态文件(在其他答案中提到)

于 2012-11-19T16:00:44.250 回答