PyCharm 支持的 Web 框架
Python 里有很多开发框架用来帮助你轻松创建 Web 应用, 本节主要讲述 PyCharm 支持哪些测试框架,以及相关框架基本介绍。
1. Web 框架介绍
Python Web 框架大致分为以下三类:
- Full-Stack Web 框架:功能非常全面,提供全方案Web开发支持。Django 是典型代表。
- Non Full-Stack Web 框架:框架相对比较灵活,只完成基本的功能,面向需求简单,项目周期短的项目。Flask 是典型代表。
- Asynchronous 异步框架:速度快,I/O性能高,高并发。 Tornado 和 Sanic 都属于这种框架。纯接口服务用的比较多。
PyCharm 专业版对下面的主流 Python 框架提供以下支持:
由图所示, PyCharm 对 Django 的支持最为全面, Flask and Pyramid 的支持次之, Django and Flask 是现在流行的Web 框架之一。
2. Django
Django是 Full-Stack Web 框架的代表,功能非常全面和成熟,开发文档很完备。它在Python Web开发框架的占有率应该是第一。Django 的宗旨就是尽可能的提供所有功能,让你用尽可能少的代码完成业务。
Django 遵循了 MVC 开发模式,并将这个模式命名为 MTV ( MTV 模式是 Python 中独有的):
- M Model(数据模型,用于后端数据库模型定义和处理模块);
- T Templates(模版,用于前端显示信息);
- V View(视图,用于接收客户端请求、处理Model、渲染返回信息给客户端等)。
优点:
- 各种组件集成高度成熟,配置齐全;
- 用户模型、权限认证体系健全;
- ORM数据库管理功能简单方便;
- 自带后台管理功能。
缺点:
配置相对复杂;
数据库 ORM 组装出来的 sql 语句性能较差。
Django安装
- 通过 pip 直接安装:
pip install Django
- 通过源码下载并安装:
git clone https://github.com/django/django.git
Tips: 我们将在下一节讲解如何在 PyCharm 创建基于Django框架的 Web 项目。
3. Flask
3.1 基本介绍
Flask 算是 Non Full-Stack Web 框架代表,是基于 Werkzeug 工具箱编写的轻量级 Web 开发框架,它在中国的应用其实挺广的。它主要面向需求简单,项目周期短的 Web。它的灵活性体现在,它的模块化设计可以轻松适合开发者的需求。Flask 跟 Django 比起来,你可以自己造轮子,也可以是以插件的形式使用第三方库。
优点:
- 项目结构和配置简单;
- 组件可以自由拆装;
- 小项目或临时性项目比较适用。
缺点:
组件高度自定义带来的就是各种组件之间的兼容性问题严重。
Flask 安装:
pip install flask
3.2 创建 Flask 项目
PyCharm 创建一个应用程序并生成特定的目录结构,您可以在 Projec 工具窗口中浏览这些结构。除此之外,PyCharm 创建了一个名称为 app.py Python 脚本。
请注意,应用程序使用以下 Flask 特定变量运行:
FLASK_APP=app.py 定义 Flask 应用程序的入口点 - Flask 类的目标实例。
FLASK_ENV=development 设置环境。
FLASK_DEBUG=0 = 控制内置的 Flask 调试模式。启用此模式FLASK_DEBUG =1 后,开发服务器将在任何代码更改时自动重新加载,从而实现持续调试。有关 Flask 调试器的信息,请参阅 Flask 调试模式。
4. Pyramid
4.1 基本介绍
与 Django 一样都是成熟的 Web 框架, 都是面向大的应用,但是在扩展性和灵活性上走了不同的路。Pyramid 关注灵活性,让开发者选择合适的工具来开发项目,这与 Flask 是相似的。
优点:
- Pyramid 在这三个框架里是最灵活的。它可以用来写小的应用,它也能来支持像 Dropbox 这样大名鼎鼎的网站;
- 支持更多的模板语言。
缺点:
- 社区活跃率低,学习资料比较少,学习曲线比较陡。
Pyramid 安装:
easy_install pyramid
4.2 创建 Pyramid 项目
打开 New Project 窗口, 选择创建 Pyramid 项目,选择解释器,然后点击 Create:
PyCharm 创建项目、安装 Pyramid 及其依赖项并生成特定的目录结构,您可以在Project 工具窗口中浏览这些结构。创建项目时,必须运行setup.py以安装项目进行开发。PyCharm 可能会通知你这样做,如下图所示:
5. Tornado
5.1 基本介绍
Tornado 是一个开源的网络服务器框架,它是基于社交聚合网站 FriendFeed 的实时信息服务开发而来的。Tornado 跟其他主流的 Python Web 服务器框架不同是采用 epoll 非阻塞 IO,响应快速,可处理数千并发连接,特别适用用于实时的 Web 服务。
优点:
- 完备的 Web 框架;
- 提供了异步 I/O 支持、超时事件处理;
- 提供高效的内部 HTTP 服务器;
- 完备的 WebSocket 支持。
缺点:
- 没有 ORM ,提供的支持和模板少,缺少后台支持,对小型项目来说开发速度没有 django 快。
安装:
- 通过 pip 直接安装:
pip install Tornado
- 通过源码下载并安装
$ git clone https://github.com/tornadoweb/tornado
$ cd tornado
$ python setup.py install
5.2 创建 Tornado 服务
Tornado 主要分成四个部分:
- Web 框架(包括 RequestHandler,用于创建Web程序的基类,以及各种支持类);
- 实现 HTTP 的客户端和服务器端 (HTTPServer 和 AsyncHTTPClient);
- 一个异步网络库 (IOLoop 和 IOStream);
- 一个协程库(tornado.gen) ,使得异步调用代码能够以更直接的方式书写,取代回调链接。
在 Pycharm 里创建一个Python 项目,然后创建新文件添加下面的代码,就创建了一个最简单的服务。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
直接运行上面的代码, 在浏览器输入 http://localhost:8888 , 就会看到 “Hello, world” 显示在页面上。
6. Web2Py 与 Google App Engine
Web2Py 与 Google App Engine 这两种在Python Web 框架中比较小众,相关的学习资料也比较少,PyCharm 对其支持也并不完全,所以下面只做简单介绍。
6.1 Web2Py
web2py 是一个为 Python 语言提供的全功能Web应用框架,旨在敏捷快速的开发 Web 应用,具有快速、安全以及可移植的数据库驱动的应用,兼容 Google App Engine。
创建 Web2Py 时,会自动下载 Web2Py source folder, 但因为下载时间可能比较长,导致下载失败,
所以可以事先下载source folder, 然后在创建时指定本地目录。
点击 create 后, 项目创建成功后,运行项目:
停待几秒,在弹出框中输入密码,然后点击 start server, Web2Py 网站搭建完成:
Web2py 最大的吸引力在于其内置的开发环境。当设置 Web2py 实例时,将获得一个 Web 界面,实际上是一个在线 Python 应用程序编辑器,可以在其中配置应用程序的组件。所以你可以通过浏览器对你的应用程序进行所有的开发、部署和维护。
6.2 Google App Engine
Google App Engine 提供一整套开发组件来让用户轻松地在本地构建和调试网络应用,之后能让用户在Google强大的基础设施上部署和运行网络应用程序,并自动根据应用所承受的负载来对应用进行扩展,并免去用户对应用和服务器等的维护工作。同时提供大量的免费额度和灵活的资费标准。在开发语言方面,支持多种语言,包括Java 、Python、 PHP、 Go 与 Node.js等等。
创建 Google App Engine 项目,事先需要下载 App Engine SDK, 在创建项目时需要指定SDK所在路径。
Google App Engine 在国内使用是受限制的,需要用 gmail 帐户注册与验证,所以用的不多,这里不再过多介绍。有兴趣的同学可以参考官网。
7. 小结
本节主要介绍了主流的 Web 测试框架,以及 PyCharm 对各个框架的支持情况。当下 Django, Flask and Tornado 是应用最多的框架。Django 是企业级框架,着眼于建立完整的大型网站, 功能是最完整的,文档也是相当完备。
Flask 吸收了其他框架的优点,把主要领域定义在了微小项目上。同时,它是可扩展的。其社区活跃度很高,文档也比较完备,相对 Django 更容易上手。Tornado 是非阻塞式服务器,速度相当快,常被用作大型站点的接口服务框架。我们可以根据自己的实际工作需要选择合适的 Web 框架进行项目开发。