常见问题:通用 — Django 文档
FAQ:概述
这个项目因何存在。
Django 源于一个非常实际的需求:World Online 是一家报纸 Web 运营商,负责在新闻截止日期前构建密集的 Web 应用程序。 在快节奏的新闻编辑室中,World Online 通常只有几个小时的时间来完成复杂的 Web 应用程序从概念到公开发布的过程。
与此同时,World Online 的 Web开发者在 Web 开发的最佳实践方面一直是完美主义者。
2003 年秋季,World Online 开发人员(Adrian Holovaty 和 Simon Willison)放弃了 PHP,开始使用 Python 开发其网站。 随着他们构建密集的、交互性强的站点(例如 Lawrence.com),他们开始提取一个通用的 Web 开发框架,使他们能够越来越快地构建 Web 应用程序。 他们不断调整这个框架,在两年内增加了改进。
2005 年夏天,World Online 决定开源由此产生的软件 Django。 如果没有一整套开源项目,Django 就不可能实现——Apache、Python 和 PostgreSQL 等等——我们很高兴能够回馈开源社区。
“姜戈”是什么意思,你怎么发音?
Django 以 Django Reinhardt 的名字命名,Django Reinhardt 是 1930 年代至 1950 年代初的爵士乐吉他手。 直到今天,他仍被认为是有史以来最好的吉他手之一。
听听他的音乐。 你会喜欢的。
Django 发音为 JANG-oh。 与 FANG-oh 押韵。 “D”是沉默的。
我们还录制了 发音的 音频剪辑。
Django 稳定吗?
是的,它非常稳定。 Disqus、Instagram、Pinterest 和 Mozilla 等公司多年来一直在使用 Django。 建立在 Django 上的网站经受住了每秒超过 5 万次点击的流量高峰。
Django 可扩展吗?
是的。 与开发时间相比,硬件便宜,因此 Django 旨在利用尽可能多的硬件。
Django 使用“无共享”架构,这意味着您可以在任何级别添加硬件——数据库服务器、缓存服务器或 Web/应用程序服务器。
该框架清晰地分离了诸如数据库层和应用层之类的组件。 它附带了一个简单而强大的 缓存框架 。
为什么 Django 包含 Python 的许可文件?
Django 包含来自 Python 标准库的代码。 Python 是在宽松的开源许可证下分发的。 :source:`Python 许可证的副本 ` 包含在 Django 中以符合 Python 的条款。
Django 似乎是一个 MVC 框架,但您将控制器称为“视图”,将视图称为“模板”。 你怎么不使用标准名称?
当然,标准化的名称是有争议的。
在我们对 MVC 的解释中,“视图”描述了呈现给用户的数据。 不一定是如何数据看起来,而是'数据的呈现方式。 该视图描述了您看到的数据,而不是您看到的数据。这是一个微妙的区别。
因此,在我们的例子中,“视图”是特定 URL 的 Python 回调函数,因为该回调函数描述了呈现哪些数据。
此外,将内容与演示分开是明智的——这就是模板的用武之地。 在 Django 中,“视图”描述了呈现哪些数据,但视图通常委托给模板,该模板描述 如何 呈现数据。
那么,“控制器”适用于何处? 在 Django 的情况下,它可能是框架本身:根据 Django URL 配置将请求发送到适当视图的机制。
如果您渴望首字母缩略词,您可能会说 Django 是一个“MTV”框架——即“模型”、“模板”和“视图”。 这种崩溃更有意义。
当然,归根结底,这归结为完成工作。 而且,无论事物如何命名,Django 以对我们来说最合乎逻辑的方式完成工作。
做 – 为什么 Django 没有?
我们很清楚还有其他很棒的 Web 框架,并且我们不反对在适当的地方借用想法。 然而,Django 的开发正是因为我们对现状不满,所以请注意“因为 do it”并不是将给定功能添加到 Django 的充分理由。
为什么你要从头开始写所有的 Django 项目,而不是使用其他 Python 库?
当 Django 最初设计时,Adrian 和 Simon 花了很多时间去研究各种各样已经存在的 Python Web 框架。
在我们看来,没有一个能完全达到所需的标准。
我们很挑剔。 你甚至可以称我们为完美主义者。 (有截止日期。)
随着时间的推移,我们偶然发现了一些我们已经实现的开源库。 看到其他人以类似方式解决类似问题令人欣慰,但集成外部代码为时已晚:我们已经在多个生产环境中编写、测试和实现了我们自己的框架位 - 我们自己的代码愉快地满足了我们的需求.
然而,在大多数情况下,我们发现现有的框架/工具不可避免地存在某种基本的、致命的缺陷,这让我们感到不安。 没有任何工具 100% 符合我们的理念。
就像我们说的:我们很挑剔。
我们已经在 设计理念页面 上记录了我们的理念。
Django 是个内容管理系统(CMS)吗?
不,Django 本身不是 CMS,也不是任何类型的“交钥匙产品”。 它是一个 Web 框架; 它是一种编程工具,可让您构建网站。
例如,将 Django 与 Drupal 之类的东西进行比较没有多大意义,因为 Django 是您用来 create 之类 Drupal 的东西。
当然,Django 的自动管理站点非常棒且省时——但管理站点是 Django 框架的一个模块。 此外,尽管 Django 为构建“CMS-y”应用程序提供了特殊的便利,但这并不意味着它不仅适合构建“非 CMS-y”应用程序(不管这意味着什么!)。
我如何下载 Django 文档进行离线阅读?
Django 文档位于每个 Django tarball 版本的 docs
目录中。 这些文档是reST(reStructuredText)格式,每个文本文件对应一个Django官方站点上的一个网页。
因为文档是 :source:`存储在版本控制中 ` ,您可以像浏览代码更改一样浏览文档更改。
从技术上讲,Django 站点上的文档是根据这些 reST 文档的最新开发版本生成的,因此 Django 站点上的文档可能提供比最新 Django 版本附带的文档更多的信息。
如何引用 Django?
很难给出正式的引文格式,原因有二:不同出版物的引文格式差异很大,软件的引文标准仍然存在争议。
例如,APA 样式 会规定如下内容:
Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://djangoproject.com.
但是,唯一真正的指南就是您出版商将接受的内容,因此请获得这些指南的副本并尽可能填补空缺。
如果您的引用样式指南需要发布者名称,请使用“Django Software Foundation”。
如果您需要发布地点,请使用“Lawrence, Kansas”。
如果您需要网址,请使用 https://djangoproject.com。
如果你需要一个名字,只需使用“Django”,没有任何标语。
如果您需要发布日期,请使用您所引用版本的发布年份(例如,v1.5 为 2013)