Django 框架

在本章中 , 我们将详细讨论 Django 框架。

Django 是一个用于构建 Web 应用程序的 MVT Web 框架。巨大的 Django Web 框架包含了如此多的 “电池 ” , 以至于开发人员经常对所有东西如何协同工作感到惊讶。添加这么多电池背后的原则是在框架本身中具有通用的 Web 功能 , 而不是将后者添加为单独的库。

Django 框架受欢迎的主要原因之一是巨大的 Django 社区.社区是如此之大 , 以至于一个单独的网站专门用于它 , 来自各个角落的开发人员开发了第三方软件包 , 包括身份验证 , 授权 , 成熟的 Django 支持的 CMS 系统 , 电子商务附加组件等.你试图开发的东西很有可能已经由某人开发了 , 你只需要把它拉到你的项目中

为什么要使用 Django ?

Django 的设计方式鼓励开发人员以快速 , 干净和实用的设计开发网站。 Django 的实用方法是在人群中脱颖而出。

如果您计划构建高度可定制的应用程序 , 例如社交媒体网站 , Django 是需要考虑的最佳框架之一.Django 的优势在于其用户之间的交互或共享不同类型媒体的能力.django 的一大优势是它能够利用大型基于社区的支持 , 为您提供高度可定制的第三方准备在您的应用程序中使用插件

以下是选择 Django 进行 Web 开发的十大理由 :

Python

Python 可以说是最容易学习的编程语言之一 , 因为它具有简单的语言结构 , 流结构和易于语法。它用途广泛 , 可运行嵌入在许多设备中的网站 , 桌面应用程序和移动应用程序 , 并作为流行的脚本语言用于其他应用程序。

包括电池

Django 带有常见的库 , 这些库对于构建 URL 路由 , 身份验证 , 对象关系映射器 ( ORM ) , 模板系统和 db 模式迁移等常见功能至关重要。

内置管理员

Django 有一个内置的管理界面 , 可以让你处理你的模型 , 用户 / 组权限和管理用户。有了模型接口 , 除了高级数据库功能之外 , 不需要单独的数据库管理程序。

没有得到你的方式

创建 Django 应用程序不会添加任何样板和不必要的功能。没有强制导入 , 第三方库和 XML 配置文件。

可扩展

Django 基于 MVC 设计模式。这意味着像 db (数据库) 、后端和前端代码这样的所有实体都是单独的实体。 Django 允许我们将代码与构成您网站的静态媒体 (包括图片、文件、 CSS 和 JavaScript) 分开。

Django 支持用于 Web 服务器 , 缓存 , 性能管理 , 群集和平衡的第三方库的完整列表。 Django 提供的优势之一是支持主要的电子邮件和消息传递应用程序和服务 , 如 ReST 和 OAuth 。

战斗测试

Django 于 2005 年首次开源。经过 12 年的发展 , Django 现在不仅经营新闻发布网站 , 还经营 Pinterest , Instagram , Disqus , Bitbucket , EventBrite 和 Zapier 等全球主要企业的全部或部分。这使其成为一个强大而可靠的 Web 框架。

巨大的软件包支持

由于其庞大的社区支持和庞大的开发人员网络 , 您打算做的任何事情都很有可能以前做过。大型国际开发人员社区通过将其项目作为开源软件包发布来为社区做出贡献。

这些项目的一个这样的存储库是 Django Package 站点。目前 , Django 软件包列出了 3400 多个可重用的 Django 应用程序 , 站点和工具 , 用于我们的 Django 项目。

积极发展

与开源项目相关的最大风险之一是其可持续性。我们不能确定它是否会持续很长时间。

Django 没有这样的风险 , 因为它已经有 12 年的历史了。它的一致版本、更新 / 更好的版本和活跃的社区每天都在增长 , 有一个由自愿贡献者组成的大型核心团队 , 他们每天都在维护和改进代码库。

稳定释放

在许多情况下 , 像 Django 这样的开源软件项目是积极开发的 , 并且比竞争的专有软件更安全 , 因为许多开发人员每天都在开发和测试它。然而 , 开源软件项目的缺点是缺乏商业上可行的开发的稳定代码库。

在 Django 中 , 我们有软件的长期支持 ( LTS ) 版本和定义的发布过程 , 如下图所示 :

Stable
Releases

一流的文档

从第一个版本开始 , Django 开发人员确保必须有适当的综合文档可用 , 并且教程很容易理解。

谁在使用 Django ?

由于 Django 的独特优势 , 有多个流行的网站是在 Django 框架之上使用 Python 构建的。以下是一些完全或部分基于 Django 构建的主要网站。

Disqus

它是全球最受欢迎的博客评论托管网站之一。它很容易通过 Disqus 与 WordPress 等最受欢迎的 CMS ( 内容管理系统 ) 集成。 Django 拥有超过 5000 万的用户群 , 能够满足网站所有者接触他们的社区。

Disqus

洋葱网站为他们的讽刺报纸提供了一个在线场所 , Django 为它提供了框架。

Onion

Bitbucket

Bitbucket 就像 GitHub , 一个版本控制存储库托管服务.Bitbucket 和 GitHub 之间的唯一区别是 Bitbucket 托管 mercurial 存储库 , 而 GitHub 托管 git 存储库.由于数百万用户与 Bitbucket 相关联 , 以及 bitbucket 提供的所有服务 ( 如创建回购 , 推送代码 , 添加协作者 , 提交 , 拉取请求等.) 必须稳定.Django 负责运行 bitbucket 站点

Bitbucket

Instagram

Instagram 是一款社交网络应用程序 , 专为那些喜欢将照片和视频分享给所有朋友的人而设计。目前 , Instagram 上有很多名人 , 以便与他们的粉丝保持更紧密的联系。 Django 框架也在运行 Instagram 。

Instagram

Mozilla Firefox

仅次于 Google Chrome 的全球第二大浏览器是 Mozilla 浏览器。现在 , Mozilla 的帮助页面是使用 Django 框架构建的。

Mozilla
Firefox

Pinterest

全球数百万用户从 Pinterest 中发现了他们的新想法和灵感。 Pinterest 正在使用 Django 框架 ( 根据他们的要求进行修改 ) 来运行它。

Pinterest

NASA

美国国家航空航天局的官方网站是数百万用户访问和查看首映机构提供的新闻 , 图像 , 视频和播客的地方。 Django 开发了 NASA 官方网站的一些特定部分。

Nasa

华盛顿邮报

如果世界上有一份有影响力的报纸 , 那肯定是《华盛顿邮报》。华盛顿邮报的网站是一个非常受欢迎的在线新闻来源 , 伴随着他们的日报。 Django Web 框架可以轻松处理其大量的视图和流量。

Washington
Post

Reddit 礼品

广受欢迎的 Reddit 网站推出了一个名为 Reddit Gifts 的在线匿名礼物交换和聚会平台。该网站连接来自世界各地的用户 , 并促进他们之间的礼物交换。 Django Web 框架为其功能提供了支持。

Reddit Gifts

Prezi

Prezi 是基于 Django 框架构建的 Microsoft PowerPoint 的基于云的替代方案。该网站提供了一个可以操作和放大和缩小的虚拟画布。这提供了演示文稿的整个视图, 而不是单独的幻灯片。

Prezi

安装和创建 Django 项目和应用程序

在安装 Django 之前 , 我们必须确保安装了 Python 。假设您使用的是 virtualenv , 那么简单的 pip 安装 django 就足够了。

安装虚拟环境和 Django

下面是在 Windows 环境中安装虚拟环境和 Django 的过程 :

Virtual
Environment

要验证 Django 是否正确安装 , 请键入下面给出的代码 :

Install Django

创建 Django 项目

安装完成后 , 我们需要创建一个 Django 项目。

在 Windows 机器中运行以下命令将创建以下 django 项目 -

django - admin startproject my _ project _ name

Django Project Creating Django
Project

键入 dir 将显示一个新文件和一个新目录 , 如上所示。

manage. py - manage. py 是一个命令行可执行的 Python 文件 , 它只是 django - admin 的包装器。它可以帮助我们管理我们的项目 , 这也隐含在它的名字中。

有了这个 , 它创建了一个名为的目录 , myFirstDjangoProject 在 myFirstDjangoProject 中 , 它表示我们项目的配置根。让我们更深入地探索它。

配置 Django

通过调用 myFirstDjangoProject 目录 “配置根 ” , 我们的意思是这个目录保存了一般配置我们的 Django 项目所需的文件。这个目录之外的几乎所有东西都将只集中在与项目的模型、视图、路由等相关的“ 业务逻辑 ” 上。

Configuring
Django

  • __ init __. py - 这是空的 , 将目录更改为可导入的 Python 包。

  • settings. py - 顾名思义 , 它是大多数配置项目将被设置的地方。

  • urls. py - URL 设置为 urls. py 。有了这个, 我们不必在这个文件中明确写入项目的每个 URL 。但是, 我们必须告诉 Django 关于 URL 已被声明的位置 (即, 我们需要链接 urls. py 中的其他 URL) 。

  • Wsgi. py - 这是为了帮助生产中的应用程序 , 类似于其他应用程序 , 如 Flask , Tornado , Pyramid , 它暴露了一些 “应用程序 ” 对象。

设置设置

查看 settings. py 内部会显示其相当大的大小 - 这些只是默认值。我们需要注意的其他事情是静态文件 , 数据库 , 媒体文件 , 云集成或其他数十种可以配置 Django 项目的方式。让我们了解 settings. py 文件中提到的一些要点 -

  • BASE _ DIR 在 setting. py 文件中 , BASE _ DIR 参数设置基目录的绝对路径。

  • 秘密 _ 密钥 - 它用于制作哈希。通常 , 我们使用 secret _ key 进行 cookie , 会话 , csrf 保护和 auth 令牌。

  • 调试 − 我们可以将其设置为在开发或生产模式下运行的项目。

  • 允许 _ 主机 − 我们提供了服务应用程序的主机名列表。在开发模式下 , 设置是可选的 ; 但是 , 在生产机器中 , 我们需要设置我们的 Django 项目。

  • INSTALLED _ APPS − 它是当前在我们的 Django 项目中安装和运行的 Django “应用程序 ” 的列表。内置 Django 提供了六个已安装的应用程序 , 如下所示 :

    • 'django. contrib. admin'

    • 'django. contrib. auth'

    • django. contrib.

    • django. contrib. sessions

    • django. contrib. messages

    • django. contrib. staticfiles

  • 中间件 − 它帮助我们的 Django 项目运行。它是一个 python 类 , 挂接到 django 请求 / 响应处理中。

  • 模板 - 它定义了如何在前端显示文档。 Django 模板用于生成任何基于文本的格式。

  • WSGI _ 应用程序 − 我们设置的任何服务器都必须知道 WSGI 文件的位置。如果您使用的是外部服务器, 它将在自己的设置中查找。默认情况下, 它指向 wsgi. py 中的对象。

  • 数据库 - 它设置为我们的 Django 项目当前正在访问的数据库。必须设置默认数据库。如果我们设置我们选择的数据库 , 我们需要提到一些与数据库相关的东西 , 如主机 , 用户 , 密码 , 端口 , 数据库名称和适当的引擎。

  • STATIC _ URL − 它是引用位于 STATIC _ ROOT 中的静态文件时要使用的 URL 。默认情况下 , 它是 None 。

但是 , 我们可能需要为静态文件添加一个路径。向下到文件的末尾 , 在 STATIC _ URL 条目下方 , 添加一个名为 STATIC _ ROOT 的新文件 , 如下所示 :

myFirstDjangoProject/settings.py

STATIC _ URL = '/ static /'

STATIC _ ROOT = os. path. join (BASE _ DIR, 'static')

设置数据库

有很多不同的数据库软件可以为您的网站存储日期。我们将使用默认的 sqlite3 。

这已经在下面的给定部分中设置了 myFirstDjangoProject / settings. py -

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

要为我们的博客创建一个数据库 , 让我们在控制台中运行以下内容 : python manage. py 迁移 ( 我们需要在包含 manage. py 文件的 myFirstDjangoProject 目录中。

如果一切顺利 , 您将获得以下输出 -

Setting Up
Database

启动 Web 服务器

您需要在包含 manage. py 文件的目录中。在控制台中 , 我们可以通过运行 python manage. py runserver 来启动 Web 服务器 , 如下所示 :

Web Server

现在 , 您需要做的就是检查您的网站是否正在运行。打开浏览器 ( Firefox , Chrome , Safari , Internet Explorer 或任何您使用的浏览器 ) 并输入此地址 -

http: / / 127.0. 0.1: 8000 /

or

http: / / localhost: 8000 / # 因为我们的网络服务器只在我们的本地机器上运行。

恭喜 ! 您刚刚创建了您的第一个网站 , 并使用 Web 服务器运行它 !

Starting Web
Server

当 Web 服务器运行时 , 您不会看到输入其他命令的新命令行提示。终端将接受下一个文本 , 但不会执行新命令。这是因为 Web 服务器持续运行以侦听传入的请求。

Django 模型

我们正在尝试创建一个 Django 模型 , 该模型将所有帖子存储在我们的博客中。但是为了确保它有效 , 我们需要了解对象。

对象

对象是属性和动作的集合, 让我们通过一个例子来理解这一点, 假设我们想对一只猫进行建模, 我们将创建一个名为 Cat 的对象, 该对象具有颜色、年龄、情绪 (好 / 坏 / 困) 和所有者等属性。

然后 , 猫有一些行动 : 呼噜声 , 划痕或饲料。

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

所以基本上我们试图用属性 ( 称为对象属性 ) 和动作 ( 称为方法 ) 来描述代码中的真实事物。

在我们建立博客时 , 我们需要一些文本内容和标题。还必须有作者的姓名 , 创作日期和出版日期。

所以我们的博客将有以下对象 -

Post 
-------- 
title 
text 
author 
created_date 
published_date

此外 , 我们需要有一些方法来发布该帖子 , 因为我们现在知道一个对象是什么 , 我们可以为我们的博客文章创建一个 Django 模型。

模型是 Django 中的一种特殊对象 , 保存在数据库中。我们将数据存储在 SQLite 数据库中。

创建应用程序

为了保持一切清晰 , 我们将在我们的项目中创建一个单独的应用程序。下面 , 我们将尝试通过运行下面提到的简单命令来创建一个博客 Web 应用程序。

现在我们会注意到一个新的 myBlog 目录被创建 , 它现在包含了许多文件。我们项目中的目录和文件应该如下 :

Creating
Application

创建应用程序后, 我们还需要告诉 Django 使用它。我们在文件 myFirstDjangoProject / settings. py 中这样做。

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

创建博客文章模型

myBlog / models. py 文件中 , 我们定义了名为 Models 的所有对象 - 这是我们将在其中定义博客文章的地方。

让我们打开 myBlog / models. py , 从中删除所有内容 , 并编写代码如下 :

Post Model

首先 , 我们通过调用 from 或 import 从其他文件中导入一些功能。因此 , 我们可以使用 从和导入 .

类 Post (models. Model) - 这一行定义了我们的模型 ( 它是一个对象 ) 。

  • 类是一个特殊的关键字 , 表示我们正在定义一个对象。

  • Post 是我们模型的名称。始终以大写字母开头的类名。

  • models. Model 意味着 Post 是一个 Django 模型 , 所以 Django 知道它应该保存在数据库中。

现在让我们讨论上面定义的属性 : title 、 text 、 created _ date 、 published _ date 和 author 。

  • models. CharField - 这是用有限数量的字符定义文本的方式。

  • Models. TextField - 这是没有限制的长文本。

  • Models. DateTimeField - 这是日期和时间。

  • Models. ForeignKey - 这是指向另一个模型的链接。

我们定义一个函数 / 方法 def 和 publish 是方法的名称。

方法经常返回一些东西。这里当我们调用 __ str __ () 时, 我们会得到一个带有 Post 标题的文本 (字符串) 。

为数据库中的模型创建表

最后一步是在我们的数据库中添加一个新模型。首先, 我们必须让 Django 明白我们在我们的模型中做了一些改变。让我们在我们的控制台窗口中用命令做同样的事情 python manage. py 进行迁移 myBlog 如下图所示 -

Migration

然后 , Django 准备一个迁移文件 , 我们现在必须将其应用于数据库。在我们的控制台中 , 我们可以键入 : python manage. py 迁移 myBlog 并且输出应该如下 -

Creating Table

我们的 Post 模型现在在我们的数据库中。

Django 管理员

要添加 , 编辑和删除我们刚刚建模的帖子 , 我们使用 Django 管理员。

所以让我们打开 myBlog / admin. py 文件 并在下面的内容中 -

Django Admin

首先 , 我们导入 ( 包含 ) 上一章中定义的 Post 模型。为了使我们的模型在管理页面上可见 , 我们需要使用 admin. site. register ( Post ) 注册模型。

要登录到管理站点 , 您需要创建一个超级用户 - 一个可以控制站点上所有内容的用户帐户。因此 , 停止 Web 服务器并输入命令行 python manage. py 创建用户 , 然后按 Enter 。

Create User

好了, 那么是时候看看我们的 Post 模型了。记得在 console 中运行 python manage. py run server 来运行 web 服务器。去你的浏览器输入地址 https: / / 127.0. 0.1: 8000 / admin / 。 使用我们刚刚选择的凭据登录。然后你应该看到 Django 管理仪表板如下 :

Run Server

转到帖子并尝试一下。您可以添加许多博客文章 , 以及来自任何地方的内容。您的博客将看起来像这样 -

Django
Administration

这只是 Django 的概述 , 我们可以用几行代码创建一个博客。