学习任何开发语言都离不开框架。框架就像一间毛坯房,只有我们装修才能搬进去。如果没有框架,我们只能一砖一瓦地盖房子。框架的种类很多,具体选择还是要看实际业务情况。下面简单介绍一下Python的七大开源框架的优缺点。DjangoDjango应该是最著名的Python框架,GAE甚至Erlang都有受其影响的框架。Django是一个大而全的方向。最出名的是全自动化的管理后台:只需要使用ORM,做简单的对象定义,就可以自动生成数据库结构和全功能的管理后台。优点:开源框架,完善的文档支持解决方案多,内部功能支持更优雅的URL,完整的路由系统自助后台管理缺点:系统耦合度高,很难用自己喜欢的第三方库替代是的,即使打了一些补丁,也会觉得很别扭。Django自带的ORM远不如SQLAlchemy强大。Template功能比较弱,无法插入Python代码。如果要写更复杂的逻辑,需要用Python实现Tag或Filter。FlaskFlask是一个用Python编写的轻量级Web应用程序框架。基于WerkzeugWSGI工具包和Jinja2模板引擎。Flask也被称为“微框架”,因为它使用简单的核心并使用扩展来添加其他功能。Flask没有默认使用的数据库或表单验证工具。优点:Flask比Django灵活。在使用Flask构建应用程序之前,它会为开发人员在选择组件时带来更大的灵活性。有些应用场景可能不适合使用标准的ORM(Object-RelationalMapping对象关联映射),或者需要与不同的工作流和模板系统进行交互。缺点:Flask只是一个核心,默认依赖两个外部库:Jinja2模板引擎和WerkzeugWSGI工具集,其他很多功能都以扩展的形式嵌入。ScrapyScrapy是一个用Python开发的快速、高级屏幕抓取和网页抓取框架,用于抓取网站和从页面中提取结构化数据。Scrapy用途广泛,可用于数据挖掘、监控和自动化测试。优点:Scrapy是一个非常强大的爬虫框架。它不仅可以轻松构造请求,还具有强大的选择器,可以轻松解析响应。然而,它最受欢迎的特点是它的性能,无论是抓取速度还是解析速度,它的下载器是多线程的,请求是异步调度和处理的。这两点让它爬行速度非常快。此外,还内置了logging、exception、shell等模块,为爬虫工作带来了很多便利。缺点:scrapy是一个封装的框架。它包括下载器、解析器、日志和异常处理。基于多线程和扭曲处理,对于固定单个网站的爬取开发有优势,但是对于多站点爬取100个网站,在并发和分布式处理方面不够灵活,不方便调整和扩大。TornadoTornado是Web服务器软件的开源版本。Tornado与当今主流的Web服务器框架(包括大多数Python的框架)有很大不同:它是一个非阻塞服务器,而且速度相当快。优点:Tornado擅长为需要严格控制异步网络细节的应用程序提供基础设施。例如,Tornado不仅提供了一个内置的异步HTTP服务器,还提供了一个异步HTTP客户端。因此,Tornado非常适合构建应用程序,例如网络抓取工具或机器人,它们可以并行查询其他站点并根据返回的数据采取行动。缺点:模板和数据库部分有很多第三方模块可供选择,不利于封装成功能模块。Web2pyweb2py是Python语言的全功能Web应用程序框架,旨在开发敏捷快速的Web应用程序,具有快速、安全和可移植的数据库驱动应用程序,与GoogleAppEngine兼容。优点:Web2py最大的吸引力在于其内置的开发环境。当您设置一个Web2py实例时,您将获得一个Web界面,实际上是一个在线Python应用程序编辑器,您可以在其中配置应用程序的组件。这通常意味着创建模型、视图和控制器,每一个都通过Python模块或HTML模板进行描述。缺点:Web2py的一个重要限制是它只与Python2.x兼容。首先,这意味着Web2py不能使用Python3的异步语法。如果您依赖Python3独有的外部库,那您就不走运了。然而,使Web2py与Python3兼容的工作正在进行中,并且在撰写本文时已接近完成。WeppyWeppy感觉像是Flask的极简风格和Django的完整性之间的中间标记。虽然开发Weppy应用程序具有Flash的直接性,但Weppy具有Django中的许多功能,例如数据层和身份验证。因此,Weppy适用于从极其简单到中等复杂的应用程序。优点:Weppy的文档与框架本身具有相同的风格。它是干净的,可读的,并且被人类消费。除了通常的“helloworld”应用程序示例外,它还包含一个很好的演练教程,可以让您创建一个微博系统作为初学者项目。缺点:虽然Weppy有扩展机制,但官方批准的插件列表很少,比Flask的扩展目录小得多。BottleBottle可以被认为是一种迷你烧瓶,因为它比其他“微型框架”更紧凑和简洁。由于占用空间极小,Bottle非常适合包含在其他项目中或用于快速交付小型项目(如RESTAPI)。优点:Bottle不需要像其他框架那样多的文档,但文档绝不吝啬。所有关键内容都放在一个(虽然很长)网页中。除此之外,您还可以找到每个API的完整文档、如何在各种基础架构上部署的示例、内置模板语言的解释以及常用方法列表。缺点:Bottle极简主义的一个后果是某些功能根本不存在。不支持表单验证,包括CSRF保护等功能。如果你想构建一个支持高度用户交互的web应用程序,你需要自己添加它们。逆风启笔是一个专注于程序员圈子的技术平台。你可以获得最新的技术动态,最新的内测资格,BAT等大厂的经验,成长自己,学习资料,职业路径,赚钱思维,微信搜索逆风奇笔关注!
