📜  Django框架

📅  最后修改于: 2020-11-06 06:03:52             🧑  作者: Mango


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

Django是用于构建Web应用程序的MVT Web框架。巨大的Django网络框架附带了如此多的“电池”,使开发人员常常对所有事物如何协同工作感到惊讶。添加这么多电池的原理是在框架本身中具有通用的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)版本和定义的发布过程,如下图所示-

稳定的发行

头等文件

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

谁在使用Django?

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

领英

它是全球最受欢迎的博客评论托管网站之一。很容易通过Disqus与大多数流行的CMS(内容管理系统)集成,例如WordPress和许多其他集成。 Django拥有5000万用户,可以满足站点所有者接触社区的需求。

领英

洋葱

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

洋葱

比特桶

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

比特桶

Instagram的

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

Instagram的

火狐浏览器

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

火狐浏览器

Pinterest的

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

Pinterest的

美国宇航局

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

美国宇航局

华盛顿邮报

如果说世界上只有一份有影响力的报纸,那肯定是《华盛顿邮报》。 《华盛顿邮报》的网站是伴随其日常报纸而广为流行的在线新闻来源。 Django Web框架可轻松处理其大量视图和流量。

华盛顿邮报

Reddit礼物

广受欢迎的Reddit网站已启动了一个名为Reddit Gifts的在线匿名礼物交换和聚会平台。该网站将来自世界各地的用户联系起来,并促进了他们之间的礼物交换。 Django Web框架增强了其功能。

Reddit礼物

普雷齐

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

普雷齐

安装和创建Django项目和应用

在安装Django之前,我们必须确保已安装Python 。假设您正在使用virtualenv,一个简单的pip install django就足够了。

安装虚拟环境和Django

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

虚拟环境

要验证Django是否正确安装,请键入以下代码-

安装Django

创建Django项目

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

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

django-admin startproject my_project_name

Django项目创建Django项目

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

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

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

配置Django

通过将myFirstDjangoProject目录称为“配置根目录”,我们的意思是该目录包含通常配置Django项目所需的文件。该目录之外的几乎所有内容都将仅专注于与项目的模型,视图,路线等相关的“业务逻辑”。将项目连接在一起的所有点都将在此处进行。

配置Django

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

  • settings.py-顾名思义,这里是设置大多数配置项的地方。

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

  • Wsgi.py-这是为了帮助应用程序投入生产,并且类似于其他应用程序,例如Flask,Tornado,Pyramid,它们公开了一些“ app”对象。

设定设定

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

  • BASE_DIR-这对查找文件很有帮助。在setting.py文件中,BASE_DIR参数设置基本目录的绝对路径。

  • SECRET_KEY-用于创建哈希。通常,我们将secret_key用于cookie,会话,csrf保护和auth令牌。

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

  • ALLOWED_HOSTS-我们提供通过其提供服务的主机名列表。在开发模式下,设置是可选的。但是,在生产机器中,我们需要设置Django项目。

  • INSTALLED_APPS-这是我们的Django项目中当前安装并正在运行的Django“应用”列表。内置Django提供了以下六个已安装的应用程序-

    • ‘django.contrib.admin’

    • ‘django.contrib.auth’

    • django.contrib。

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE-它有助于我们的Django项目运行。这是一个与Django请求/响应处理相关的Python类。

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

  • WSGI_APPLICATION-我们设置的任何服务器都必须知道WSGI文件在哪里。如果您使用的是外部服务器,它将使用自己的设置。默认情况下,它指向wsgi.py中的对象。

  • 数据库-它设置为我们的Django项目当前正在访问的数据库。必须设置默认数据库。如果设置了我们选择的数据库,我们需要提及与数据库相关的一些东西,例如-HOST,USER,PASSWORD,PORT,数据库NAME和适当的ENGINE。

  • STATIC_URL-当引用位于STATIC_ROOT中的静态文件时使用的URL。默认情况下为“无”。

但是,我们可能需要为静态文件添加路径。转到文件的末尾,在STATIC_URL条目的下面,添加一个名为STATIC_ROOT的新文件,如下所示-

myFirstDjangoProject/settings.py

STATIC_URL =’/静态/’

STATIC_ROOT = os.path.join(BASE_DIR,’静态’)

设置数据库

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

这已经在myFirstDjangoProject / settings.py的以下给定部分中进行了设置

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

要创建我们的博客数据库,让我们运行在控制台下面的-Pythonmanage.py迁移(我们需要在包含manage.py文件myFirstDjangoProject目录。

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

设置数据库

启动Web服务器

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

网络服务器

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

http://127.0.0.1:8000/

要么

http:// localhost:8000 / #由于我们的网络服务器仅在本地计算机上运行。

恭喜你!您已经创建了第一个网站并使用Web服务器运行它!

启动Web服务器

当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目录,并且该目录现在包含许多文件。我们项目中的目录和文件应如下所示-

创建应用

创建应用程序后,我们还需要告诉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,从中删除所有内容,然后编写代码,如下所示:

邮政模型

首先,我们通过调用from或import从其他文件中导入一些功能。因此,我们可以在from和import中包括一些部分,而不是在每个文件中复制和粘贴相同的内容。

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

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

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

  • models.Model表示Post是Django模型,因此Django知道应将其保存在数据库中。

现在让我们讨论上面定义的属性:标题,文本,created_date,published_date和author。为此,我们需要定义每个字段的类型。

  • models.CharField -这是你如何定义与有限的字符数的文本。

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

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

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

我们用def定义一个函数/ method,而publish是方法的名称。

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

在数据库中为模型创建表

最后一步是向我们的数据库添加一个新模型。首先,我们必须让Django了解我们已经对模型进行了一些更改。让我们在控制台窗口中使用Python manage.py命令进行相同的操作,使迁移myBlog如下所示-

移民

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

建立表格

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

Django管理员

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

因此,让我们打开myBlog / admin.py文件并将其放在下面的内容中-

Django管理员

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

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

创建用户

好的,现在该看一下我们的Post模型了。记住要在控制台中运行Python manage.py run server来运行Web服务器。转到浏览器并输入地址https://127.0.0.1:8000/admin/。使用我们刚刚选择的凭据登录。然后您应该看到Django管理控制台,如下所示-

运行服务器

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

Django管理

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