年底总结一下Python WEB最好用的几个框架,让你有一个系统的了解

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框架。学习新的东西,并为您的工具箱中的不同任务有不同的工具。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171230A0SK1800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励