【问题标题】:why doesn't django handle static files all by itself, without apache?为什么 django 不单独处理静态文件,没有 apache?
【发布时间】:2012-11-07 13:54:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: django apache django-staticfiles


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      等等……

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

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

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

      【讨论】:

      • 但它会更容易部署,尤其是当性能不是问题时,你会想要的。
      • Django 的 staticfiles 系统很棒,事实上很多人在之前使用它,它被包含在 django 中(参见 django-staticfiles 应用程序)。我相信任何愿意付出很少努力的人都可以完全理解它并发现它也很棒。
      【解决方案3】:

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

      python manage.py runserver 0.0.0.0:80

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

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

      【讨论】:

        猜你喜欢
        • 2013-10-08
        • 2021-07-22
        • 2015-08-16
        • 2012-03-19
        • 2021-10-28
        • 2020-09-11
        • 2012-12-01
        • 2014-10-31
        • 2011-03-15
        相关资源
        最近更新 更多