常见问题:通用 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/faq/general
跳转至:导航、​搜索

常见问题:一般

为什么会有这个项目?

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 就不可能实现——ApachePythonPostgreSQL 等等——我们很高兴能够回馈开源社区。


“姜戈”是什么意思,你怎么发音?

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 最初是在美国堪萨斯州劳伦斯一家报纸的网络部门 World Online 开发的。 Django 现在由一个国际 志愿者团队 运营。


Django 是如何获得许可的?

Django 分布在 :source:`3 条款 BSD 许可证 ` . 这是一个开源许可证,授予修改和重新分发 Django 的广泛权限。


为什么 Django 包含 Python 的许可文件?

Django 包含来自 Python 标准库的代码。 Python 是在宽松的开源许可证下分发的。 :source:`Python 许可证的副本 ` 包含在 Django 中以符合 Python 的条款。


哪些网站使用 Django?

DjangoSites.org 提供了一个不断增长的 Django 站点列表。


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://www.djangoproject.com/.

但是,唯一真正的指南是您的出版商会接受的内容,因此请获取这些指南的副本并尽可能地填补空白。

如果您的引用样式指南需要发布者名称,请使用“Django Software Foundation”。

如果您需要发布地点,请使用“Lawrence, Kansas”。

如果您需要网址,请使用 https://www.djangoproject.com/。

如果你需要一个名字,只需使用“Django”,没有任何标语。

如果您需要发布日期,请使用您所引用版本的发布年份(例如,v1.5 为 2013)