Python 框架介绍
Python 框架介绍#
今天,有非常多的 Python 框架,用来帮助你更轻松的创建 web 应用。这些框架把相应的模块组织起来,使得构建应用的时候可以更快捷,也不用去关注一些细节(例如 socket 和协议),所以需要的都在框架里了。接下来我们会介绍不同的选项。
Python 发源于八十年代后期。开发者是 Centrum Wiskunde & Informatica 的 Guido van Rossum,这是位于荷兰阿姆斯特丹科学园区的一个数学和计算机科学研究中心。之后 Van Rossum 一直是 Python 开发很有影响的人物。事实上,社区成员给了他一个荣誉称号:终生仁慈独裁者 (BDFL)。
经过初期的不起眼,Python 已经成为互联网最流行的服务端编程语言之一。根据 W3Techs 的统计,它被用于很多的大流量的站点,超过了 ColdFusion, PHP, 和 ASP.NET。其中超过 98% 的站点运行的是 Python 2.0,只有 1% 多一点的站点运行 3.0。
框架让开发更轻松#
今天,有着大量的 Python 框架,它们可以让 web 应用的开发更轻松。这些框架把不同的模块集成在一起,让你更快的构架程序,而不用关注一些细节(例如 socket 和协议),框架提供了需要的所有功能。
作为分成两部分的系列文章的第一部分,我们会介绍一些最流行的 Python 框架。虽然大部分现代的 web 框架都运行在服务端,也有一些框架开始尝试与客户端代码结合,可以在客户端运行(例如 Skulpt 和 Trinket)。Python 框架通常分为全栈框架和非全栈框架。全栈框架设计从用户体验到数据库的所有技术,非全栈框架则并不包含整个开发的全部技术。
此外还有一种微框架,也属于非全栈框架,但是更轻量级。有的情况下,微框架是比较适合的,有时又适合使用全栈框架。在文章的第二部分我们会对全栈框架和微框架做一个比较。
Django#
Django 恐怕是最有代表性的 Python 框架了。它是一个遵循 MMVC 架构模式的开源框架。它的名字来自 Django Reinhardt,一个法国作曲家和吉他演奏家,很多人认为他是历史上最伟大的吉他演奏家。位于堪萨斯洲的 Lawrence 城的 Lawrence Journal-World 报社有两位程序员,Adrian Holovaty 和 Simon Willison,他们在 2003 的时候开发出了 Django,用于给报纸开发 web 程序。
Django 内置了模板引擎,同时也通过 OOTB 来支持流行的 Jinja2 引擎。它还支持基于正则的 URL 分发,可以通过简单的 URL 来完成复杂的映射。
Django 的优势之一是只需要单独的安装包来安装。其他的一些类似的框架需要下载很多组件才能开始工作。而且,Django 还有完善的保持更新的文档,对于开源项目来说这通常是短板。它是一个健壮的框架,很好的集成了很多来自社区的插件和扩展。项目背后的社区看上去也组织的很好,这从它非常完善的文档和教程就可以看出来。
TurboGears#
TurboGears 是在几个著名的 Python 项目上构建起来的一个框架,如 SQLAlchemy,WebOb,Repoze,Genshi。在某种意义上,TurboGears 是将多个已经建立的开放平台粘合在一起。和 Django 一样,它采用 MVC 架构。它最近还包含一个 “最小模式”,使其可以作为一个微框架。
TurboGears 是由 Kevin Dangoor 在 2005 年开发的。他在当年 9 月将其作为一个开源项目发布。2013 年,项目开发人员迁移到支持 Python 3,抛弃了他们曾经写的 Pylons 代码。TurboGears 的优点包括:
- 支持聚合
- 强大的对象关系映射器
- 事务系统支持多数据库间事务
- 多数据库支持
- 以可重用的代码片段为模板
- 具有很多的灵活性,可以对接非标准组件
- 支持分片
- 模板系统使设计师的设计更轻松
TurboGears 的一些缺点包括管理功能较为基础,较少的第三方应用程序以及只有初级的文档。TurboGears 的一个重大挑战是它的压倒性。因为它混搭的其他组件都提供无限的灵活性, 当试图决定何种路径来完成一个任务时它是过于复杂的。
web2py#
web2py 是一个开源框架,允许开发者快速创建动态交互式的网站。它的设计目标是消除拖慢开发的大量重复编程任务,比如创建基本的表格。它在最初是作为工具开发的。随后被 Django 和 Ruby on Rails 模仿,Ruby on Rails 是个 Ruby 的框架。同 TurboGears 一样,它使用 MVC 架构。
最开始的源代码是由 Massimo DiPierro 在 2007 年开放的。在那时,它被称为 Enterprise Web Framework (EWF) 。由于命名冲突,它改过好几次名字,最后在 1.16 版确定为当前的 web2py 。使用 web2py 开发的应用包括 Movuca 内容管理系统,音乐网站 NoobMusic,名为 LinkFindr 的网络诊断工具,以及 Instant Press 博客平台。在 2011 年,web2py 被评为最好的开源开发软件,荣获 Bossie Award。第二年,又斩获 InfoWorld 的年度技术奖。
与 Django 一样,web2py 也具有广泛的文档。新开发者和高级开发者可以免费下载它的完整开发手册。
web2py 的一些优点包括:
- 容易使用 —— 作为一个很棒的全栈式框架,它无需其他依赖就可以工作,容易学习和部署,安装也无需任何配置文件,一旦下载完成,安装完毕,就可以用了。开发者会获得一个数据库,一个基于 web 的 IDE,web 服务器以及一个有多个核心对象组成的强大 API。
- 安全性出色 —— Web2py 的模板语言减少了黑客使用跨站脚本的危险,抽象层在创建表单时有表单域有效性检查,避免 SQL 注入,也阻止了跨站请求伪造攻击( csrf 攻击)。会话被存储在服务器上,阻止坏的执行者把浏览器 cookie 弄乱,并且每个密码都是哈希后存储的。
web2py 的一些缺点包括:
- 在常规基础上使用管理的接口不太容易
- 管理的接口没有权限
- 没有内建的单元测试支持
- 开发速度迅速,所有的函数都有缺省行为,表单时自动生成的,高层次的小部件和应用网格都是内建的
Flask 是一个基于 Jinja2 和 Werkzeug 的 python 微框架,和其他框架类似,它是 BSD 授权的,一个有少量限制的免费软件许可。使用 Flask 的网站包括领英 LinkedIN 和 Pinterest。Flask 有以下特点:
- 内建的单元测试支持
- 模板使用 Jinjia2
- 大量文档
- 客户端会话使用安全 cookies
- 开发服务器和调试器
- Restful 请求
- 与 WSGI 1.0 兼容
- 基于 unicode
- 大量的扩展
Flask 是一个年轻的框架,2010 年诞生,Flask 的目标是不给程序员强加限制,允许你使用自己的数据库对象关系映射,模板引擎,会话中间件以及你的项目所需的其他组件,在我看来这就是这个微框架的用意。
我想说像 Flask 这样的框架更适合有经验的开发者,并不是小规模应用程序所必须的,当然,如果你只想做一个简单的 REST API,那么 Flask 当然再好不过了。
瓶(Bottle)
和 flask 一样,Bottle 是一个服务器网关接口(WSGI)网络框架。作为一个文件,它不依赖于 Python 标准库外的任何库。Marcel Hellkamp 于 2009 年写它的时候,它仅由包含模板、路由和一个 WSGI 抽象层的最小工具开始。对于程序员寻找灵活性和基本功能、构建简单的应用程序和网站、创建一个 Web API 来说,这小并且强大的框架是极好的。
它的优点包括:
- 内建的快速模板引擎和对 Jinja2,Mako 和 Cheetah 的支持
- 可以访问上传,cookies, 表单数据,标题,和其他元数据的大量工具
- 支持 fapws3,Google App Engine,CherryPyPaste 的内建 HTTP 开发服务器
- 支持动态 URLs
Bottle 的另一个优点是,它的小巧精干便于嵌入在一个较大应用程序中而不必担心系统依赖关系。如果你想用一个简单的,干净的和快速的框架并且它没有过多冗余,来创建小的应用程序,Bottle 是适合你的。
多框架
虽然很难相信,但这些只是少数几十个开发人员可以使用 Python 框架,。Python.org 报道,Django,TurboGears 和 web2py 是最受欢迎的完整选项。为了在框架优化方面提供一个全面的观察,这里我们添加了两个高级形态的微型框架。有着热情的追随者其他框架包括 Pyramid, web.py, Bobo, Albatross, 和 CherryPy。
找到正确的适合选择
正确框架的选择取决于项目的规模,它的通信需求,它是否是一个独立的应用程序,定制需求的级别,开销,和许多其他因素。同样重要的是,它取决于哪个框架适合你个人的工作方式。回顾这些项目并下载他们最新的版本。在计划一个主要旅行之前,试开一下确保你在一个合适的车辆中。
转载地址:https://www.oschina.net/translate/an-intro...
原文地址:https://dzone.com/articles/an-introduction...
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: