Python Web 开发库 - 快速指南


Python Web 开发库 - 简介

每当用户打开任何网络浏览器(例如 Google Chrome 或 Mozilla)并搜索“Web 开发”时,都会立即出现数千个结果。是什么让这成为可能?Web开发!它广泛地指与构建、创建和维护通过内联网或互联网托管的网站相关的工作。网站设计相关的工作包含多个领域:网页编程、数据库管理、网页设计、网页发布等。

Web开发包括影响网站运行的所有代码。我们可以将 Web 开发的整个过程分为两类 -

  • 前端
  • 后端

尽管前端和后端 Web 开发确实彼此不同,但它们也就像同一枚硬币的两面。一个完整的网站依赖于每一方作为一个整体与另一方进行有效的沟通和运作。前端和后端在Web开发中同样重要。

应用程序的前端或客户端是负责用户在屏幕上直接体验的所有内容的代码,从文本颜色到按钮、图像和导航菜单。下面列出了前端开发人员使用的一些常见技能和工具 -

  • HTML/CSS/JavaScript
  • CSS 预处理器
  • 构架
  • 图书馆
  • Git 和 Github

通常,应用程序的后端/服务器端负责管理数据库中的信息并将该信息提供给前端。网站的后端由服务器、应用程序和数据库组成。一般来说,它涉及在访问浏览器之前发生的所有事情。后端 Web 开发所需的工具是 -

  • 编程语言- Ruby、PHP、Python 等

  • 数据库- MySQL、PostgreSQL、MongoDB、Oracle 等。

为什么要进行网页开发?

在当今世界,有多种选择可以促进您的业务或技能以及分享您的想法。其中一些是通过网站、市场中的本地应用程序等进行推广。创建新网站作为业务发展工具的趋势正在世界范围内迅速发展。但是,我们中的一些人可能没有意识到网站对企业发展的重要性。

目前,有许多初创企业正在努力在公开市场上建立自己的地位。然而,他们中的大多数人也确实未能获得他们想要的目标受众。导致他们失败的一个主要原因是他们低估了功能齐全的网站为他们赢得业务的潜力。用于商业或任何其他目的的网站开发可以证明是非常富有成效的。

让我们看看网站开发对业务增长很重要的一些重要原因 -

接触您的受众

在线网站可以覆盖最广泛的受众,并且不受限制本机应用程序的平台的限制。观众或客户可以轻松访问,即从台式机/笔记本电脑到移动设备,因为网站能够通过网络浏览器显示内容。

与本机应用程序相比,网页浏览要简单得多,因为它不需要用户访问其设备上的应用程序商店或下载其应用程序(这可能包括访问您的内容的一个或多个过程)。基于 Web 的应用程序的数据分发比本机应用程序更加灵活和敏捷,因为没有严格的应用程序商店要求和内容限制需要遵循。

另一个对 Web 开发非常有帮助的工具是利用 SEO 技术来定位受众。

24/7 无障碍

如果企业主开发一个网站作为在线论坛或类似网站,而不是为公司建立实体渠道,那么将有很大机会获得更多的在线受众进行联系。这是因为,大多数人整天都与互联网保持联系。

一般来说,人们更喜欢选择最明智的方式,先上网查一下,然后再做出决定。因此,如果企业主填写产品的所有基本详细信息,并采取安全的方式及时将产品交付给客户,那么人们会更喜欢在线购买,而不是亲自前往商店。这也使得人们即使在一天中最奇怪的时间也可以访问它。

方便

功能齐全的网站为用户提供了更大的优势,他们可以随时收听并寻找他们需要的内容。一般来说,如果用户可以选择在线购买,他们就会避免去实体商店。因此,如果您是一位聪明的商人,您会更愿意在网站上提供您的产品或商店的所有详细信息,只是为了赚取业务,否则您可能不会这样做。

全球营销

通过在线网站,您可以链接到社交论坛并向全球大量受众推销您的产品/服务。通过此功能,您可以定期在社交论坛上宣传和分享您的作品,以获得更高的目标受众足迹。

可靠来源

在线门户是任何公司/组织最值得信赖的平台。有时官方网站甚至可以作为他们的唯一办公室。考虑这样一个场景,访问公司的物理位置并不容易。在这种情况下,您可以通过关注他们的网站来克服这种担忧。

简而言之,通过开发网站,您只需点击几下即可推广您的服务,并且可以吸引来自世界各地的消费者的注意力。事实证明,公司的网站不仅可以在更短的时间内获得业务,而且可以吸引更多的受众。

Python 框架

Python 是 Web 和应用程序开发人员最容易接受的语言之一,因为它非常重视效率和可读性。有许多优秀的 Python Web 框架,每个框架都有自己的专长和功能。

姜戈

在这里,我们将概述 Django 框架的一些必要的细节和功能。

类别- Django 属于全栈 Python 框架。

版本- 最新版本 - 2.1 版本,常用版本 - 1.8、1.6 版本。

关于- Django 由经验丰富的开发人员构建,是一个高级 Python Web 框架,允许快速、干净和务实的设计开发。Django 可以处理 Web 开发的大部分复杂问题,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费且开源的。

为了将对象映射到数据库表,Django 使用 ORM,并且同样用于从一个数据库传输到另一个数据库。

它适用于大多数重要的数据库,如 Oracle、MySQL、PostgreSQL、SQLite 等。

业界有许多网站使用 Django 作为后端开发的主要框架。

姜戈的特点

这个 Python Web 框架的一些典型功能是 -

  • URL路由
  • 验证
  • 数据库架构迁移
  • ORM(对象关系映射器)
  • 模板引擎

Django 框架的官方网站是 - https://www.djangoproject.com/

姜戈

烧瓶

类别- Flask 属于非全栈框架。

版本- 1.0.2 于 2018-05-02 发布

关于- 它被归类为微框架,因为我们不需要任何特定的库或工具。它没有表单验证或数据库抽象层或任何其他组件,其中预先存在的第三方库提供通用功能。然而,Flask 支持多种扩展,这些扩展扩展了应用程序功能,就好像它们是在 Flask 本身中实现的一样。存在对象关系映射器、表单验证、上传处理、各种开放身份验证技术和一些常见框架相关工具的扩展。

烧瓶的特点

  • 对单元测试的集成支持
  • 安静的请求调度
  • 包含开发服务器和调试器
  • 使用 Jinja2 模板
  • 支持安全cookie
  • 基于 Unicode
  • 100% 符合 WSGI 1.0
  • 丰富的文档
  • Google 应用引擎兼容性
  • 可用于增强所需功能的扩展
烧瓶

Web2py

类别- Web2py 属于全栈框架家族。

版本- 2.17.1,于 2018-08-06 发布

关于- Python 2.6、2.7 到 Python 3.x 版本。由于没有其他依赖项,它本身就是一个完整的包。应用程序的开发、数据库管理、调试、部署、测试和维护都可以通过 Web 界面完成,但通常不需要。它是一个可扩展的开源框架,带有自己的基于 Web 的 IDE,以及代码编辑器、一键部署和调试器。

Web2py的特点

该框架附带许多开发工具和内置功能,消除了开发人员的复杂性麻烦。

  • 无需安装和配置,轻松运行。

  • 通过Python 2.7/3.5/3.6/版本支持几乎所有主要操作系统,如Windows、Unix/Linux、Mac、Google App Engine和几乎所有网络托管平台。

  • 轻松与 MySQL、MSSQL、IBM DB2、Informix、Ingres、MongoDB、SQLite、PostgreSQL、Sybase、Oracle 和 Google App Engine 进行通信。

  • 它可以防止最常见的漏洞类型,包括跨站脚本、注入缺陷和恶意文件执行。

  • 支持错误跟踪和国际化。

  • 多种协议可读性。

  • 采用成功的软件工程实践,使代码易于阅读和维护。

  • 通过向后兼容性确保面向用户的进步。

Web2py

Pyramid

类别- Pyramid 是一个非全栈框架

版本- 1.9.2,发布于 2018-04-23

关于- Pyramid 是一个小型、快速、实用的 Python Web 框架。它是作为 Pylons 项目的一部分开发的。它是根据类似 BSD 的许可证获得许可的。它使现实世界的 Web 应用程序开发和部署变得更加有趣、更加可预测且更加高效。

Pyramid的特点

Python Pyramid 是一个开源框架,具有以下功能 -

  • 简单性- 任何人都可以开始使用它,而无需事先了解它。

  • 极简主义- Pyramid 开箱即用,只附带了一些几乎每个 Web 应用程序都需要的重要工具,可能是安全性或服务静态资产(如 JavaScript 和 CSS)或将 URL 附加到代码。

  • 文档- 包括独家且最新的文档。

  • 速度- 非常快且准确。

  • 可靠性- 它是在开发时牢记它是保守的并经过彻底测试的。如果未正确测试,将被视为损坏。

  • 开放性- 它是通过宽松和开放的许可证出售的。

Pyramid

短跑

类别- Dash 框架属于“其他”Python Web 框架。

版本- 0.24.1,核心破折号后端。

关于- Dash 作为一个开源库,用于创建基于 Web 的交互式可视化。plotly 团队创建了 Dash——一个开源框架,利用 Flask、React.js 和plotly.js 构建自定义数据可视化应用程序。该库的主要亮点是您可以仅通过 Python 代码构建高度交互的 Web 应用程序。数据科学家喜欢 dash 框架,特别是那些不太熟悉 Web 开发的人。

使用 Dash,开发人员可以访问所有可配置属性和底层 Flask 实例。使用Dash框架开发的应用程序可以部署到服务器并最终在Web浏览器中呈现。

Dash 应用程序本质上是跨平台(Linux/Win/Mac)和移动设备友好的,并且应用程序的功能可以通过丰富的 Flask 插件来扩展。

短跑

达世币的特点

  • 提供对可配置属性和 Flask 实例的访问
  • 通过Flash插件,我们可以扩展Dash应用程序的功能
  • 移动就绪

Django框架

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

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

Django 框架流行的主要原因之一是庞大的 Django 社区。该社区非常庞大,以至于专门建立了一个单独的网站,来自各个角落的开发人员开发了第三方软件包,包括身份验证、授权、成熟的 Django 支持的 CMS 系统、电子商务附加组件等。您尝试开发的内容很可能已经由某人开发,您只需将其拉入您的项目即可。

为什么要使用 Django?

Django 的设计方式鼓励开发人员快速、简洁且实用的设计开发网站。Django 的突出之处在于其务实的办事方法。

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

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

Python

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

包含电池

Django 附带了一些通用库,这些库对于构建 URL 路由、身份验证、对象关系映射器 (ORM)、模板系统和数据库模式迁移等通用功能至关重要。

内置管理员

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,可以轻松与 WordPress 等最流行的 CMS(内容管理系统)集成。Django 拥有超过 5000 万的用户群,能够满足网站所有者接触其社区的需求。

讨论

洋葱

Onion 网站为他们的讽刺报纸提供了在线场所,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 正在使用 Django 框架(根据他们的要求进行修改)来运行它。

兴趣

美国宇航局

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

美国宇航局

华盛顿邮报

如果说世界上有一份有影响力的报纸,那肯定是《华盛顿邮报》。《华盛顿邮报》的网站是一个非常受欢迎的在线新闻来源,与其日报一起使用。其巨大的浏览量和流量可以通过 Django Web 框架轻松处理。

华盛顿邮报

Reddit 礼物

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

Reddit 礼物

普雷齐

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

普雷齐

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

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

安装虚拟环境和Django

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

虚拟环境

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

安装Django

创建 Django 项目

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

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

django-admin startproject my_project_name

姜戈项目 创建 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 等公开一些“应用程序”对象的其他应用程序。

设定设置

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

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

  • SECRET_KEY - 用于生成哈希值。一般来说,我们将 Secret_key 用于 cookie、会话、csrf 保护和身份验证令牌。

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

  • 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

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

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

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

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

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

要为我们的博客创建数据库,让我们在控制台中运行以下命令 - python manage.py migrate(我们需要位于包含 manage.py 文件的 myFirstDjangoProject 目录中。

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

设置数据库

启动网络服务器

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

网络服务器

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

http://127.0.0.1:8000/

或者

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

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

启动网络服务器

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

姜戈模型

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

对象

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

然后猫会做出一些动作:发出Grunt声、抓挠或喂食。

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文件中,我们定义了所有称为模型的对象 - 这是我们定义博客文章的地方。

让我们打开 myBlog/models.py,删除其中的所有内容,然后编写如下代码 -

邮政模型

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

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

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

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

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

现在让我们讨论上面定义的属性:标题、文本、创建日期、发布日期和作者。为此,我们需要定义每个字段的类型。

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

  • Models.TextField - 用于无限制的长文本。

  • Models.DateTimeField - 用于日期和时间。

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

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

方法通常会返回一些东西。这里,当我们调用 __str__() 时,我们将获得带有帖子标题的文本(字符串)。

在数据库中为模型创建表

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

移民

然后,Django 准备一个迁移文件,我们现在必须将其应用到我们的数据库。在我们的控制台中,我们可以输入:python manage.py migrate 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 的概述,我们只需几行代码就可以创建一个博客。

烧瓶框架

Flask 是一个微框架,对外部库的依赖很少。这是一个非常轻量级的框架,让我们可以自由地做任何我们想做的事情。

在本章中,我们将使用Python和Flask框架构建一个项目。

Flask 启动和配置

与大多数广泛使用的 python 库一样,Flask 包可以从 Python 包索引 (PPI) 安装。让我们首先创建一个目录(在本章中,我们创建了一个名为flaskProject的目录),然后创建一个虚拟环境(并将其称为flaskEnv),其中将加载所有与项目相关的依赖项(包括flask)。您还可以安装flask-sqlalchemy,以便您的flask应用程序能够以简单的方式与SQL数据库进行通信。

安装 Flask 后,您的 FlaskEnv(我们的虚拟环境名称)将显示如下内容 -

烧瓶启动

使用 Flask 创建应用程序

通过安装flask,我们可以用很少的代码行创建一个简单的“ flask中的hello应用程序”,如下所示 -

创建烧瓶

在终端中输入以下内容 -

$python flaskapp.py

您可以看到以下输出 -

在http://127.0.0.1:5000/localhost:5000上运行

运行本地主机

以下是我们在示例代码中所做的解释 -

  • 首先,我们导入Flask类库。此类的一个实例是 WSGI 应用程序。

  • 其次,我们创建该类的一个实例。应用程序包或模块名称是我们的第一个参数。Flask 必须知道在哪里可以找到静态文件、模板和其他文件。

  • 接下来是route() 装饰器,我们用它来知道哪个URL 应该触发我们的方法/函数。

创建 URL 路由

URL 路由使 Web 应用程序中的 URL 易于记住。我们现在将创建一些 URL 路由 -

/hello
/members
/members/name

我们可以根据上面的URL编写如下代码,并保存为app.py。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
   return "Index!"
	
@app.route('/Hello')
def hello():
   return "Hello, World!"
	
@app.route("/members")
def members():
   return "Members"
	
@app.route("/members/<name>/")
def getMember(name):
   return name
	
if __name__ == '__main__':
   app.run(debug=True)
重新启动应用程序时,我们使用以下代码行在不同的 URL 上获取不同的输出 -

$ python app.py

在 http://localhost:5000/ 上运行

我们将在浏览器中得到以下输出 -

本地主机索引

我们可以在浏览器中尝试其他 URL,如下所示 -

在 http://localhost:5000/hello 上运行,将给出以下输出 -

本地主机浏览器

在 http://localhost:5000/members 上运行,将给出 -

本地主机成员

在 http://localhost:5000/members/TutorialsPoint/ 上运行,将为您提供以下输出 -

本地主机教程点

但通常我们不想返回字符串(如上所述),我们返回模板。为此,我们想使用 Flask 中的函数“ render_template ”,并返回带有一些输入的 render_template。因此,下面的函数将完成我们的工作 -

from flask import render_template
return render_template(‘home.html’)

让我们创建一个文件夹模板并将 home.html 文件放入其中。

接下来,我们将讨论布局。我们将设计一个包含 head 和 body 标签并包装当前视图或当前模板的布局,而不是为每个模板使用 html head 标签和 body 标签。为此,我们必须创建一个单独的文件并将其命名为layout.html。在这里,我们可以放置普通的 head 标签、body 标签和所有其他所需的标签。

我们可以使用以下代码行创建新的layout.html -

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>MyFlaskApp</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
   </head>
   <body>
      {% include 'includes/_navbar.html' %}
      <div class="container">
      {% block body %}
      {% endblock %}
      </div>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
      </script>
   </body>
</html>

在上面的代码中,我们给出了标题轨道 MyFlaskAp,在 head 中使用 css cdn,在 body 块中使用 javascript 来启用引导程序。

现在,我们必须为每个页面创建导航栏。为此,我们必须首先创建一个 include 文件夹,然后在其中创建 _navbar.html 文件。现在在 _navbar.html 中,我们必须使用 getbootstrap.com 中的标准入门模板。新创建的 _navbar.html 文件如下 -

导航栏

并将这个 _navbar.html 文件包含到我们的layout.html 文件中。

{% include 'includes/_navbar.html' %}

由于我们有布局块,因此我们可以在主文件(home.html)中扩展此块。

我们的 home.html 文件可以使用以下代码创建 -

{% extends 'layout.html' %}
{% block body %}
   <div class="jumbotron text-center">
      <h1>Welcome to FlaskApp</h1>
      <p>This application is built on Flask webframework!</p>
   </div>
{% endblock %}

如果我们尝试运行 Flaskapp.py 文件,那么我们可以在浏览器中看到以下输出 -

欢迎瓶

现在我们要激活(当前选项卡不起作用)我们的“关于”选项卡。为 about 选项卡创建一个路由并创建一个模板文件about.html

关于 appflask.py 中的选项卡路由如下所示 -

关于选项卡

about.html 文件将包含以下内容 -

关于HTML

所以主页和关于现在已经处理好了。对于文章,我们可以在根目录中创建一个新文件(data.py),我们将数据放置在其中并在网页中调用它。

数据.py

def Articles():
   articles = [
      {
         'uid': 1,
         'title': 'Article_One',
         'body': 'Flask, being a microframework, often requires some repetitive step
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Rajesh Joshi',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 2,
         'title': 'Article_Two',
         'body': "Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.",
         'Author': 'Rajesh J',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 3,
         'title': 'Article_Three',
         'body': 'Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could be
            abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Joshi Rajesh',
         'Created-on': '07-09-2018'
      }
   ]
   return articles

下面是articles.html的代码,它将显示每个uid的文章标题。

{% extends 'layout.html' %}
{% block body %}
   <h1>Articles</h1>
   {% for article in articles %}
      <li class="list-group-item">
         <a href="article/{{article.uid}}"> {{article.title}}</a>
      </li>
   {% endfor %}
{% endblock %}

总而言之,Flask 由于其轻量级而成为最流行的 Python Web 框架之一。虽然它是微型的,但它是一个可扩展的 python Web 框架。通过提供所需的功能,Flask 加速了简单 Web 应用程序的开发。所以 Flask 更适合较小、不太复杂的应用程序。

Web2py框架

Web2py 是一个易于使用的框架。使用 web2py,无需安装和配置,因为它是便携式的并且也可以在美元驱动器上运行。与许多其他 Python 框架一样,它基于 MVC 框架。尽管大多数不支持旧版本的 Python,但 web2py 仍然支持旧版本:python 2.6 和 2.7。它还支持当今广泛接受的 LDAP 身份验证。

Web2py 试图通过关注三个主要目标来降低 Web 开发的进入门槛 -

  • 快速发展
  • 使用方便
  • 安全

牢记用户的观点,Web2py 的构建并不断在内部进行优化,使其成为一个更快、更精简的框架,包括对向后兼容性的支持。

安装和配置Web2py框架

运行 web2py 很简单,您需要从以下链接下载 exe: http://www.web2py.com/init/default/download

对于 Windows,您可以下载 zip 文件,解压缩并直接或从命令行运行 exe 文件。系统将在下面的屏幕上提示您输入管理员密码。

Web2py框架

您可以选择管理员密码并启动服务器。您将看到以下屏幕 -

管理员密码

使用 Web2py 创建应用程序

现在我们准备创建一个新的应用程序。单击底部的管理选项卡。因此,输入管理员密码后,我们将看到以下屏幕 -

Web2py 管理

转到新的简单应用程序,输入一些应用程序名称(例如 helloWeb2py),然后单击创建。这将显示设计界面页面,如下所示 -

你好Web2py

您还可以访问当前的实时网络 helloWeb2py,只需在本地计算机上输入http://127.0.0.1:8000/helloWeb2py ,您将获得以下输出 -

欢迎页面

在 helloWeb2py 应用程序的设计页面中,转到控制器并单击 default.py 旁边的编辑按钮。如果更改index()函数的返回值,将显示以下输出 -

索引页

保存更改,现在您可以检查 helloWeb2py 应用程序中所做的更改。只需刷新http://127.0.0.1:8000/helloWeb2py链接,您将看到以下输出 -

Web2py 网址

在云平台上部署应用程序

现在,如果您想在云平台上部署您的应用程序,请返回您的主页并单击该站点。您可以选择任何部署选项。在这里,我们选择“pythonAnywhere”。转至 pythonAnywhere 网站并进行注册(如果尚未完成)。单击“添加新的 Web 应用程序”并填写所有凭据(选择 web2py 应用程序)。全做完了。

现在转到https://username.pythonanywhere.com/welcome/default/index,单击管理选项卡(输入密码)。接下来单击上传并安装打包的应用程序。填写如下凭据并单击安装。

云平台

一切完成后,将出现一条弹出消息,如下所示 -

弹出消息

现在要查看您的应用程序,请打开以下链接 -

https://username.pythonanywhere.com/welcome/default/index您可以看到以下屏幕 -

部署应用程序

我们的第一个 web2py 应用程序已成功创建并部署。

总而言之,Web2py 是一个免费、快速、安全的 Web 开发框架,完全用 python 编写,并鼓励以各种可能的方式使用 python(模型、视图、控制器)。对于小型 Web 应用程序或原型来说,它是一个非常好的框架,但无法满足企业级质量要求。这是因为,在企业级应用程序中,由于缺乏单元测试、良好而准确的错误报告以及分散的模型,解决错误的复杂性将成倍增加。

Pyramid框架

Pyramid 是一个用 python 构建的通用、开源、Web 应用程序开发框架。它允许 python 开发人员轻松创建 Web 应用程序。

Pyramid 由企业知识管理系统 KARL(乔治·索罗斯项目)提供支持。

安装、启动和配置

正如所描述的,“从小处开始,大处完成,保持完成框架”,Pyramid 很像 Flask,只需很少的精力即可安装和运行。事实上,一旦您开始构建此应用程序,您就会认识到某些模式与 Flask 类似。

以下是创建Pyramid框架环境的步骤 -

  • 首先,创建一个项目目录。在这里,我们创建了一个名为pyramidProject的目录(您可以选择任何您想要的名称)。

  • 接下来,创建一个虚拟环境,您将在其中安装所有项目特定的依赖项。在这里,我们创建了一个名为pyramidEnv的虚拟环境文件夹,其中安装了Pyramid。

  • 然后,转到目录PyramidEnv并使用pip install Pyramid 安装Pyramid

一旦完成上述所有操作,您的目录结构将如下所示 -

目录结构

系统中安装的Pyramid版本如下 -

Pyramid版本

核心概念

Pyramid框架基于以下核心概念 -

  • Zope(可扩展性、遍历、声明性安全性)- Pyramid 在可扩展性、遍历概念和声明性安全性方面松散地基于 Zope。

  • Pylons(URL 调度、持久性的非固定视图、模板等) - Pyramid概念的另一个领域是 pylons 项目。Pylons 具有路由的概念,它调用Pyramid框架内的 URL 调度,并且它们还具有持久层或模板的非固定视图。

  • Django(视图,文档级别)- Pyramid 也从 Django 获得提示。我们获取视图、路由 URL 和文档级别的方式非常 Django 方式。

以下是Pyramid框架的特点 -

  • 它是已知最快的 Python Web 框架。

  • 它支持小型和大型项目(当您的小型框架无法满足需求时为什么要重写)。

  • 它支持单文件 Web 应用程序,例如微框架。

  • 它有内置会话。

  • 它支持类似于 Plone/Zope 的事件。

  • 它提供事务管理(如果已经注意到我们之前使用过 Zope)。

配置

配置是影响应用程序操作的设置。配置Pyramid应用程序有两种方法:命令式配置和声明式配置。

Pyramid配置支持 -

  • 命令式配置,甚至覆盖基于装饰器的配置

  • 配置冲突检测(包括更多本地与更少本地确定)

  • 配置可扩展性(包含在多个应用程序中)

  • 灵活的认证授权策略

  • 配置的编程内省(查看路由的当前状态以生成导航)

网址生成

在Pyramid中,我们可以生成路由、资源和静态资产的 URL。使用 URL 生成 API 既简单又灵活。通过通过Pyramid的各种 API 生成 URL,用户可以任意更改配置,而不必担心破坏与您的任何网页的链接。

简而言之,Pyramid中的 URL -

  • 支持 URL 生成,以允许对应用程序进行更改而不会破坏链接。

  • 生成位于应用程序内部或外部的静态资源的 URL。

  • 支持路由和遍历。

意见

Pyramid的主要工作之一是在请求到达您的应用程序时查找并调用可调用的视图。视图可调用对象是一些代码,它们响应应用程序中发出的请求而执行一些有趣的操作。

当您将视图映射到 URL 调度或 python 代码时,可以存在任何类型的调用。视图可以是函数声明或实例,它可以用作Pyramid中的视图。

下面给出了有关视图的一些重要要点 -

  • 视图是从任何可调用对象生成的。

  • 基于渲染器的视图可以简单地返回字典(不需要返回 webby 样式对象)。

  • 支持每个路由的多个视图(GET、POST、HTTP 标头检查等)。

  • 视图响应适配器(当您想要指定应如何处理视图返回值与响应对象时)。

可扩展性

Pyramid 的设计考虑到了可扩展性。因此,如果Pyramid开发人员在构建应用程序时牢记某些约束,则第三方应该能够更改应用程序的Behave,而无需修改其源代码。遵守某些约束的Pyramid应用程序的Behave可以被覆盖或扩展,而无需任何修改。它专为灵活部署到多个环境(无单例)而设计。Pyramid 有“Tweens”中间件支持(WSGI 中间件,但在 Pyramid 本身的上下文中运行)。

运行 Hello, Pyramid 程序

安装Pyramid框架后,我们可以想到的检查一切是否正常的最简单的程序是运行一个简单的“Hello,World”或“Hello,Pyramid”程序。

下面是我在 8000 端口号上的Pyramid“Hello, Pyramid”程序 -

Pyramid计划

上面的简单例子很容易运行。将其保存为 app.py(在此,我们命名为pyramid_helloW.py)。

运行最简单的程序: -

运行程序

接下来,在浏览器中打开http://localhost:8000/,您将看到Hello, Pyramid! 消息如下 -

你好Pyramid

以下是对上述代码的解释 -

行号 1-3

在文件的头部,我们有导入语句。第一行导入 make_server 函数,该函数在传递给应用程序时可以创建一个简单的 Web 服务器。第二行和第三行从Pyramid导入配置和响应函数。这些函数分别用于配置应用程序的详细信息和设置参数以及响应请求。

行号 5-6

现在我们有一个名为hello_world的函数定义。实现生成响应的视图代码。满足视图要求的函数负责呈现将传递回请求实体的文本。在上述情况下,该函数在调用时使用我们之前导入的 Response 函数。这会传回应该给客户端的值。

行号 8

if __name__ == '__main__':Python 表示“从命令行运行时从这里开始”,而不是导入此模块时。

行号 9-11

在行号中。9、我们从程序顶部导入的配置器函数创建的对象中创建一个名为 config 的变量。第10行和第11行调用该对象的add_route和add_view方法。该方法用于定义可供应用程序使用的视图。正如我们所看到的,我们传递了之前定义的 hello_world 函数。这是该函数实际上作为视图合并的地方。

行号 12-14日

在此,我们实际上通过调用 config 对象的 make_wsgi_app 方法来创建 WSGI 应用程序。这使用对象的属性(例如我们添加的视图)来创建应用程序。然后,该应用程序被传递到我们导入的 make_server 函数,以便创建一个可以启动 Web 服务器来为我们的应用程序提供服务的对象。最后一行启动该服务器。

我们的hello world 应用程序是最简单、最容易的Pyramid应用程序之一,“强制”配置。这是必要的,因为当我们执行配置任务时,我们可以使用 Python 的全部功能。

总而言之,Pyramid 是一个开源 Python Web 框架,拥有庞大且活跃的社区。这个大型社区致力于使 Python Web 框架变得流行和相关。Pyramid Web 框架通过提供一组强大的功能和工具来简化和加速 Web 应用程序开发。

达世币框架

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

Dash 是一个开源 Python 框架,用于构建分析 Web 应用程序。它是一个功能强大的库,可以简化数据驱动应用程序的开发。它对于不太熟悉 Web 开发的 Python 数据科学家特别有用。用户可以使用 dash 在浏览器中创建令人惊叹的仪表板。

Dash 构建于 Plotly.js、React 和 Flask 之上,将下拉列表、滑块和图表等现代 UI 元素直接与您的分析 Python 代码联系起来。

Dash 应用程序由 Flask 服务器组成,该服务器通过 HTTP 请求使用 JSON 数据包与前端 React 组件进行通信。

Dash 应用程序纯粹用 Python 编写,因此不需要 HTML 或 JavaScript。

仪表板设置

如果您的终端中尚未安装 Dash,请安装下面提到的 Dash 库。由于这些库正在积极开发中,因此请经常安装和升级。还支持 Python 2 和 3。

  • pip install dash==0.23.1 # 核心 dash 后端
  • pip install dash-renderer==0.13.0 # dash 前端
  • pip install dash-html-components==0.11.0 # HTML 组件
  • pip install dash-core-components==0.26.0 # 增强组件
  • pip installplotly==3.1.0 # Plotly 图形库

为了确保一切正常工作,在这里,我们创建了一个简单的 dashApp.py 文件。

破折号或应用程序布局

达世币应用程序由两部分组成。第一部分是应用程序的“布局”,它基本上描述了应用程序的外观。第二部分描述应用程序的交互性。

核心组件

我们可以使用dash_html_componentsdash_core_components库构建布局。Dash 为应用程序的所有可视组件提供了 Python 类。我们还可以使用 JavaScript 和 React.js 自定义我们自己的组件。

将 dash_core_components 导入为 dcc

将 dash_html_components 导入为 html

dash_html_components 用于所有 HTML 标签,其中 dash_core_components 用于使用 React.js 构建的交互性。

使用上面的两个库,让我们编写如下代码 -

app = dash.Dash()
app.layout = html.Div(children=[
   html.H1(children='Hello Dash'),
   html.Div(children='''Dash Framework: A web application framework for Python.''')

等效的 HTML 代码如下所示:

<div>
   <h1> Hello Dash </h1>
   <div> Dash Framework: A web application framework for Python. </div>
</div>

编写简单的 Dash 应用程序

我们将学习如何使用上述库在dashApp.py文件中编写一个关于 dash 的简单示例。

# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()
app.layout = html.Div(children=[
   html.H1(children='Hello Dash'),
   html.Div(children='''Dash Framework: A web application framework for Python.'''),
	
   dcc.Graph(
      id='example-graph',
      figure={
         'data': [
            {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'Delhi'},
            {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Mumbai'},
         ],
         'layout': {
            'title': 'Dash Data Visualization'
         }
      }
   )
])

if __name__ == '__main__':
   app.run_server(debug=True)

运行达世币应用程序

运行 Dash 应用程序时请注意以下几点。

(我的张