Django框架

在本章中,我们将详细讨论Django Framework.

Django是一个用于构建Web应用程序的MVT Web框架.巨大的Django网络框架带有如此多的"电池包含",开发人员经常会对一切如何协同工作感到惊讶.添加如此多电池背后的原则是在框架中具有通用的Web功能,而不是将后者添加为单独的库.

Django框架流行的主要原因之一是巨大的Django社区.社区是如此巨大,以至于一个单独的网站致力于它,来自各个角落的开发人员开发了第三方软件包,包括身份验证,授权,成熟的Django支持的CMS系统,电子商务附加组件等.您尝试开发的内容很可能已经由某人开发,您只需要将其添加到您的项目中.

为什么要使用Django?

Django的设计方式鼓励开发人员快速,干净,实用的设计开发网站. Django实现方法的实用方法就是从人群中脱颖而出.

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

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

Python

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

包含电池

<Django带有公共库,这些库对于构建URL路由,身份验证,对象关系映射器(ORM),模板系统和db-schema迁移等常用功能至关重要.

已构建-in admin

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

不妨碍你

创建Django应用程序不会添加样板,也不会添加不必要的函数.没有强制导入,第三方库和XML配置文件.

可扩展

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

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

战斗测试

Django首次开放经过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

这是最受欢迎的博客评论之一 - 全球托管网站.它很容易通过Disqus与最流行的CMS(内容管理系统)如WordPress和许多其他人集成. Django处理超过5000万的用户群,能够满足网站所有者与他们的社区的联系.

Disqus

洋葱

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

洋葱

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 Gifts

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

Reddit Gifts

Prezi

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

Prezi

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

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

安装虚拟环境和Django

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

虚拟环境

验证是否正确安装Django,输入下面给出的代码和减号;

安装Django

创建Django项目

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

在windows机器上运行以下命令将创建以下django项目 :

django-admin startproject my_project_name

Django Project 创建Django项目

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

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

有了这个,它在myFirstDjangoProject中创建了一个名为 myFirstDjangoProject 的目录,它代表了配置根对于我们的项目.让我们深入探讨它.

配置Django

通过调用myFirstDjangoProject目录"配置root",我们的意思是这个目录包含必要的文件通常配置我们的Django项目.几乎所有这个目录之外的内容都只关注与项目模型,视图,路线等相关的"业务逻辑".将项目连接在一起的所有点都将在这里引导.

Configuring 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令牌.

  • DEBUG : 我们可以将其设置为在开发或生产模式下运行的项目.

  • ALLOWED_HOSTS : 我们提供了通过其提供应用程序的主机名列表.在开发模式下,可以选择设置;但是,在生产机器中,我们需要设置我们的Django项目.

  • INSTALLED_APPS : 它是当前在我们的Django项目中安装和运行的Django"apps"列表.内置Django提供六个已安装的应用程序,如下所示;

    • 'django.contrib. admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django. contrib.staticfiles

  • MIDDLEWARE : 它有助于我们的Django项目运行.这是一个挂钩到django请求/响应处理的python类.

  • TEMPLATES : 它定义了文档应该如何在前端显示. Django模板用于生成任何基于文本的格式.

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

  • DATABASES : 它设置为Django项目当前访问的数据库.必须设置默认数据库.如果我们设置了我们选择的数据库,我们需要提及与数据库相关的一些内容,例如 -  HOST,USER,PASSWORD,PORT,数据库名称和相应的ENGINE.

  • STATIC_URL : 它是引用位于STATIC_ROOT中的静态文件时使用的URL.默认情况下,它是None.

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

 
 myFirstDjangoProject/settings.py

STATIC_URL ='/static/'

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'),
} 
}

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

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

设置数据库

启动Web服务器

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

Web Server

现在您需要做的就是检查您的网站是否正在运行.打开您的网站浏览器(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 中包含一些部分.

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

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

  • Post是我们模型的名称.总是用大写字母开始一个类名.

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

现在让我们讨论一下我们在上面定义的属性:title,text,created_date,published_date和author.为此,我们需要定义每个字段的类型.

  • models.CharField : 这是您使用有限数量的字符定义文本的方法.

  • Models.TextField : 这适用于没有限制的长文本.

  • Models.DateTimeField : 这是日期和时间.

  • Models.ForeignKey : 这是另一个模型的链接.

我们用 def 定义一个函数/方法,发布是方法的名称.

方法经常返回一些东西.这里当我们调用__str __()时,我们将得到一个带有帖子标题的文本(字符串).

为数据库中的模型创建表格

最后一步是在我们的数据库中添加一个新模型.首先,我们必须让Django明白我们在模型中做了一些改变.让我们在控制台窗口中使用命令 python manage.py make migrations myBlog ,如下所示 :

Migration

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

创建表

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

Django Admin

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

所以让我们打开 myBlog/admin.py文件并将以下内容放在此 :

Django Admin

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

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

创建用户

好的,所以是时候查看我们的Post模型了.记得在控制台中运行python manage.py运行服务器来运行Web服务器.转到您的浏览器并输入地址 https://127.0.0.1:8000/admin/.使用我们刚刚选择的凭据登录.然后你应该看到Django管理仪表板如下 :

运行服务器

转到帖子并进行一些实验.您可以从任何地方添加许多博客文章和内容.你的博客看起来像这样 :

Django Administration

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