2017年就要过完了,我们来总结一下2017年最好用的17个Python Web框架
群内不定时分享干货,包括2017最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流
Django
Django的主要原则是在时间上发展任何复杂的东西。它最初是为内容管理系统开发的,但其丰富的功能(包括但不限于模板,自动数据库生成,数据库访问层,自动管理界面生成)非常适合其他类型的Web应用程序。提供用于开发的Web服务器。形成序列化和验证,具有模板继承的模板系统,以多种方式缓存,国际化,序列化为XML或JSON。Django提供了维护应用程序:授权系统,动态管理系统,RSS和Atom生成器,Google Sitemaps生成器等等。Django被Instagram,Pinterest,The Washington Times,Disqus,Bitbucket和Mozilla使用。
在开发一个微应用程序时,Django从一开始就以复杂性开始。在安装包(字面意义上的Django)之后,您必须使用“django-admin startproject myproject”命令创建一个项目。然后,您应该配置应用程序
myproject/myproject/settings.py
至少数据库访问和模板。Django应用程序在结构上总是统一的。
myproject/myproject/urls.py
另外,myproject / myproject / settings.py和myproject / templates / myproject / message.html中的模板也有一些明显的变化。
pip freeze contains: appdirs, Django, packaging, pyparsing, six.
Flask
基于Werkzeug和Jinja2的Python的微框架“好心”。作为一个微框架,Flask在开发具有简单需求的小应用程序时非常值得使用,而不像Django,Pyramid等。例如,你可以用任何你喜欢的方式使用Flask来操作你的数据库 - 通过SQLAlchemy或其他方法。如果您打算开发一个小应用程序并自行配置一切,请使用它。其他功能:开发Web服务器,集成单元测试支持,Google App Engine兼容性。Flask由LinkedIn使用,Pinterest。
Flask的例子很简单
pip freeze contains: appdirs, click, Flask, itsdangerous, Jinja2, MarkupSafe, packaging, pyparsing, six, Werkzeug.
Tornado
其主要特点是无阻塞的I/O。因此,Tornado可以缩放以处理数以万计的开放连接。一个理想的长轮询,WebSockets和其他使用持续连接的框架。Tornado官方只支持Linux和BSD操作系统(Mac OS X和Microsoft Windows仅推荐用于开发)。Tornado的起源是FriendFeed项目,现在由Facebook拥有。
任务不需要任何Tornado的关键特性 - 异步。顺便说一句,与Tornado简单的应用程序很容易。
pip freeze lists: appdirs, packaging, pyparsing, six, tornado.
Falcon
Falcon是一个适用于小型应用程序,应用程序后端和更高级别框架的微框架。它鼓励遵循REST概念,因此,在使用Falcon进行开发时,您应该考虑映射到HTTP方法的资源和状态转换。Falcon是Python中速度最快的Web框架之一。它被Cronitor,EMC,Hurricane Electric,OpenStack,Opera Software,Wargaming,Rackspace使用。
Falcon根本不适合提供HTML页面。适用于RESTful API。下面是一些代码,用于响应带有JSON响应的GET请求。
As Falcon doesn't include a server, Waitress is suitable as one. waitress-serve --port=8080 app:api
The response for http://localhost:8080/hello is simple {"message": "Hello world!"}
pip freeze contains: appdirs, falcon, packaging, pyparsing, python-mimeparse, six, waitress.
Hug
Python最快的Web框架之一。它旨在构建API。它支持提供几个API版本,自动API文档和注释验证。此外,Hug是建立在另一个名为Falcon的JSON框架之上的。让我们通过Hug提供一个JSON响应。
Launched with the waitress by command "waitress-serve --port=8080 app:__hug_wsgi__"
pip freeze contains: appdirs, falcon, hug, packaging, pyparsing, python-mimeparse, requests, six, waitress.
Sanic
一个Flask般的web框架,开发速度很快。它支持异步请求处理程序,使您的代码非阻塞和快速。
用{'message': 'Hello world!'}JSON 响应的代码可以在下面看到。
pip freeze lists: aiofiles, appdirs, httptools, packaging, pyparsing, sanic, six, ujson, uvloop.
Aiohttp
Aiohttp是一个异步的Web框架,大量使用Python 3.5+异步和等待功能。下面的例子只显示了一个明显的非异步功能。aiohttp不仅仅是一个服务器的web框架,也是客户端的一个。它支持WebSocket服务器和客户端。由于它支持与Jinja2的集成,因此该示例使用此功能。
pip freeze lists: aiohttp, aiohttp-jinja2, appdirs, async-timeout, cchardet, chardet, Jinja2, MarkupSafe, multidict, packaging, pyparsing, six, yarl.
Pyramid
大型应用程序的框架。它的目标是灵活的,不像“盒子里的东西”Django。例如,模板和数据库管理需要外部库。Pyramid网络应用程序从一个单一文件模块开始,并演变成雄心勃勃的项目。
用Pyramid开发单个文件应用程序需要时间!Pyramid文档是作弊的:如果你想用一个字符串作为响应,你可以在他们的主页上有一个例子,但是当你尝试使用模板时...文档不清楚,首先是因为项目结构不明显。Pyramid_chameleon已被另外安装使用变色龙模板(${} instead of Jinja's {{}})。这是应用程序的代码。
pip freeze lists: appdirs, Chameleon, hupper, packaging, PasteDeploy, pyparsing, pyramid, pyramid-chameleon, repoze.lru, six, translationstring, venusian, WebOb, zope.deprecation, zope.interface.
下面的框架不太受欢迎。但是,由于它们还在开发中,所以还是要提及它们。
此图显示了Python框架出现的Google搜索引擎结果的历史记录:
Growler
构建在asyncio之上,受Node.js的Connect和Express框架的启发。ORM,模板等应该手动安装。请求通过传递中间件链来处理。
CherryPy
旨在成为“程序员和问题之间的一种方式”。通过CherryPy开发的常见Web应用程序看起来像一个普通的Python应用程序,它可以在没有复杂的设置和定制的情况下使用。此外,它支持不同的Web服务器,如Apache,IIS等。CherryPy包含一个嵌入式Web服务器,因此您的应用程序可以部署在任何安装了Python的地方。CherryPy允许一次启动多个HTTP服务器。输出压缩,各部分可配置,灵活的插件系统。CherryPy不会强迫你使用任何特定的模板引擎,ORM或JavaScript库,所以你可以使用你喜欢的东西。
MorePath
一个灵活的模型驱动的Web框架。支持REST开箱即用。其主要概念是可重用性和可扩展性。
TurboGears2
一个MVC web框架。其功能包括具有真正的多数据库支持的ORM,支持水平数据分区,小部件系统以简化AJAX应用程序的开发。模板引擎是Kajiki(必须另外安装)。您可以使用TurboGears进行开发,因为它是一个微框架,也是一个完整的解决方案,可以安装额外的组件。请注意,TurboGears2的PyPI包叫做tg.devtools。
Circuits
Circuits与CherryPy具有相似的功能。与CherryPy不同,Circuits是开发独立多进程应用程序的高效Web框架。它是事件驱动的,它支持并发,异步I / O组件。这是完全可用的开箱即用。
Watson-framework
一个基于组件的WSGI事件驱动的MVC Web框架。
Pycnic
用于开发JSON API的最快的Web框架之一。
WebCore
轻量级的全栈框架。您可以在单个文件中开发应用程序,或者根据需要对其进行结构化。
Reahl
用纯Python开发Web应用程序的Web框架。有一些小部件可以在通常的Python代码中使用,定制和编写。这些小部件描述了特定的服务器端和客户端行为。
概要
这个简洁的概述留下了最好的Python框架。尝试aiohttp或Tornado,如果你需要不同步,当你开发的东西连续连接。
如果你开发一些丰富的东西,试试Django。
如果您开发JSON API,请尝试Hug或Sanic。
如果你开发一些简单的东西,可以尝试尝试Flask。
尝试Pyramid,如果你发展丰富但非凡的东西可以尝试尝试Pyramid
由于框架的选择取决于项目的特定需求,因此我们无法挑选出最适合网络开发的Python框架。学习新的东西,并为您的工具箱中的不同任务有不同的工具。
领取专属 10元无门槛券
私享最新 技术干货