概述
收藏:30个Python Web开发框架介绍
- 1. Bobo
- 2. Bottle
- 3. CherryPy
- 4. Cyclone
- 5. Flask
- 6. Itty-Bitty
- 7. Klein
- 8. Morepath
- 9. ObjectWeb
- 10. Pecan
- 11. Pyramid
- 12. Tornado
- 13. web.py
- 14. Wheezy Web
- 15. Falcon
- 16. web2py
- 17. Quixote
- 18. API Star
- 19. Twisted
- 20. Sanic
- 21. Japronto
- 22. TurboGears
- 23. BlueBream
- 24. Pylons
- 25. repoze.bfg
- 26. Hug
- 27. FastAPI
- 28. Grok
- 29. Dash
- 30. Django
1. Bobo
Bobo是一个轻量级的框架,用来创建WSGI web应用。它的目标是简单易用,容易记忆。它强调两个方面的内容:
- 把URL映射到对象;
- 调用对象来生成HTTP响应。
注意:Bobo并不具备模板语言、数据库集成层或是其他一些WSGI中间件或特定应用程序库所提供的功能。Bobo建立在其他框架之上,尤其是WSGI和WebOb。
官方教程主页为:https://bobo.readthedocs.io/en/latest/
2. Bottle
Bottle是一个快速、简单、轻量级的WSGI微型Python web框架。它仅包含单一文件模块,并且不依赖除了Python标准库以外的其他库。它支持类似Google App Engine、Python Paste这样的应用,还包含了对一些模板的支持,比如Cheetah和Mako。
Bottle框架大致可以分为以下四个部分:
- 路由:将请求路由给功能调用映射,并支持干净和动态URL。
- 模板:快速和pythonic内置模板引擎,并支持mako,jinja2和cheetah模板。
- 公共组件:用于提供处理请求相关的信息,例如表单数据、文件上传、cookies、请求头以及其他HTTP相关的元数据。
- 服务:内置HTTP开发服务器,支持paste、bjoern、gae、cherrypy或任何其他支持WSGI的HTTP服务器。
Bottle官方主页:http://www.bottlepy.com/docs/dev/
3. CherryPy
CherryPy允许开发者以他们构建其他面向对象Python程序近乎同样的方式来开发web应用。这使得可以在更短的时间内开发出更精简的源代码。CherryPy允许你进行很多常规的Python编程,但是它并没有整合一个模板系统,你需要自己去找一个。(它支持大多数的模板)
CherrPy非常适应默认的Python功能和结构,仅是能够以较少的代码开发Web应用程序之间的链接。CherryPy现在已有十多年的历史,并且已被证明非常快速和稳定。 从最简单到最苛刻的生产环境,许多站点都在使用它。
CherryPy官网主页:https://cherrypy.org/
4. Cyclone
Cyclone是用于Python的Web服务器框架,该框架将Tornado API实现为Twisted协议。
Twisted是一种适用于Python的事件驱动的网络编程框架,可追溯到2002年。它是最成熟的非阻塞I / O库,可供公众使用。 Tornado是FriendFeed的Web服务器的开源版本,它是Python最受欢迎,最快速的Web服务器之一,并具有用于构建Web应用程序的非常不错的API。
这个想法是将Tornado优雅而简单的API桥接到Twisted的Event-Loop,从而实现大量受支持的协议。这种结合为构建混合服务器提供了基础,该混合服务器能够非常有效地处理HTTP,同时还可以同时服务或使用电子邮件,ssh,sip,irc等。
除了这一丰富的功能集之外,Cyclone还解决了C10K问题。 有关更多信息,请访问http://www.kegel.com/c10k.html。
Cyclone官方主页:http://cyclone.io/
5. Flask
Flask是一个轻量级的WSGI Web应用程序框架。它旨在使快速入门变得容易,并具有扩展到复杂应用程序的能力。基于Werkzeug WSGI工具箱和Jinja2 模板引擎,并已成为最受欢迎的Python Web应用程序框架之一。Flask提供了建议,但不强制执行任何依赖关系或项目布局。 由开发人员选择他们想使用的工具和库。 社区提供了许多扩展,使添加新功能变得容易。
Flask使用BSD授权。 Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
Flask官方主页:https://flask.palletsprojects.com/en/1.1.x/
Flash使用示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
$ export FLASK_APP=hello.py
$ flask run
* Running on http://127.0.0.1:5000/
6. Itty-Bitty
itty.py是一个小的具有实验性质,并试图以Sinatra的方式构造的微型框架,该框架的作用仅仅是有用的,仅此而已。注意:Sinatra是一门基于Ruby的领域专属语言,致力于轻松、快速地创建网络应用。具体参考:http://sinatrarb.com/intro-zh.html
目前支持:
- 路由
- 基本响应
- 内容类型
- HTTP状态码
- URL参数
- 基本的GET/POST/PUT/DELETE支持
- 用户定义的错误处理程序
- 重定向支持
- 文件上传
- 标头支持
- 静态媒体投放
注意! 如果您正在寻找一个经过验证的,可用于企业的框架,那么您来对地方了,而且这确实很有趣。
官方主页:https://github.com/toastdriven/itty
7. Klein
Klein是一个使用Python来开发可用于生产环境web服务的微型框架。它基于使用非常广泛且经过良好测试的组件,比如Werkzeug和Twisted,以及近乎完全的测试覆盖率。
Klein主页地址:https://github.com/twisted/klein
Klein使用教程:https://klein.readthedocs.io/en/latest/
8. Morepath
Morepath是具有强大的能力的Python 微型web框架。Morepath是一个Python WSGI微型框架,应用程序由模型组成。每种类型的模型都发布在URL路径上。它使用路由,但是是针对模型的路由。Morepath是一个模型驱动,灵活的框架,这使得它富有表达力。
Morepath具有如下特性:
- Morepath不会妨碍使用者。
- 它让使用者可以轻松表达自己想要的内容。
- 它具有简单,一致且通用的扩展和覆盖机制,可扩展,支持可重用的代码。
- 它了解有关生成超链接的信息。 网络是关于超链接的,Morepath实际上知道它们。
- 视图是简单的功能。 所有视图都是通用的。
- 它在盒子里提供了开发REST Web服务的所有工具。
- Morepath有很多文档。
Morepath主页地址:https://github.com/morepath/morepath
Morepath使用教程:https://morepath.readthedocs.io/en/latest/
9. ObjectWeb
ObjectWeb 是一个快速,极简的纯Python Web框架,不依赖任何的第三方库。它围绕Python进行设计,因为起初想要把它当做面向对象的编程语言来使用。ObjectWeb支持CGI和WSGI标准,而且有一个内置的开发服务器。注意:仅使用了Python 2.7对ObjectWeb Framework进行了测试和开发。
ObjectWeb主页地址:https://github.com/aisola/ObjectWeb
10. Pecan
Pecan的创建填补了Python web-framework世界中的空白——一个非常轻巧的框架,它提供了对象分派样式路由(object-dispatch style routing)。 Pecan并非旨在成为“全栈”框架,因此不提供对会话或数据库之类的现成支持。 相反地,Pecan专注于HTTP本身。
虽然它很轻巧,但是Pecan提供了广泛的功能集,可用于构建基于HTTP的应用程序,包括:
- 对象分派,轻松路由
- 全面支持REST风格的控制器
- 可扩展的安全框架
- 可扩展的模板语言支持
- 可扩展的JSON支持
- 简单的基于Python的配置
虽然Pecan不提供对现成的会话或数据库的支持,但包含了一些教程,可以将它们自己集成到几行代码中。
Pecan主页地址:http://www.pecanpy.org/
Pecan使用教程:https://pecan.readthedocs.io/en/latest/
11. Pyramid
Pyramid是一个非常通用的开源Python Web框架。 作为框架,其主要工作是使开发人员更轻松地创建任意Web应用程序。 创建的应用程序的类型不是很重要; 它可以是电子表格,公司内部网或社交网络平台。Pyramid足够通用,可以在多种情况下使用。
Pyramid官方主页:https://www.trypyramid.com/
Pyramid使用教程:https://docs.pylonsproject.org/projects/pyramid/en/1.10-branch/
12. Tornado
Tornado是一个Python Web框架和异步网络库,最初由FriendFeed开发。 通过使用非阻塞网络I/O,Tornado可以扩展到成千上万的开放连接,非常适合长时间轮询、WebSocket和需要与每个用户保持长期连接的其他应用程序。
Tornado主页地址:https://github.com/tornadoweb/tornado
Tornado使用教程:https://tornado-zh-cn.readthedocs.io/zh_CN/latest/
Tornado使用案例:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
13. web.py
web.py是一个小巧灵活的Python框架,它简单而且功能强大。
web.py的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。这样的优点是,框架给开发带来的限制少,可以根据自己的需求进行定制。缺点就是,很多东西都需要自己亲自动手开发。
web.py主页地址:https://webpy.org/
web.py使用案例:
import web
urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
if __name__ == "__main__":
app.run()
14. Wheezy Web
一个轻量级、高性能、高并发的WSGI web框架,具备创建现代,高效网络应用的关键功能。其特点如下:
- 需要Python 2.4-2.7 or 3.2+.
- MVC架构模式(基于推送)
- 功能包括:路由、模型更新/验证、身份验证/授权、具有依赖项的内容缓存、xsrf/重新提交保护、AJAX+JSON、i18n(gettext)、中间件等。
- 模板引擎,可与jinja2,mako,tenjin和wheezy.template集成,以及html小插件。
它针对性能进行了优化,经过了充分的测试和记录。
Wheezy.web主页地址:https://pythonhosted.org/wheezy.web/
15. Falcon
Falcon是一个微框架,旨在快速构建API。它一直是已知且广泛使用的Python框架之一,不需要大量加载依赖项即可创建HTTP API。Falcon有助于更清洁地设计支持HTTP和REST体系结构的API。其特点如下:
- 基于URI模板RFC的路由
- REST-inspired的URI到资源的映射
- Global,resource和方法钩子
- 惯用的HTTP错误响应
- 全面的Unicode支持
- 直观的请求和响应对象
- 与gevent等异步库配合使用效果很好
- 编写安全API的攻击面最小
- 全面的测试套件可实现100%的代码覆盖率
- 不依赖其他Python包
- 支持Python 2.7、3.5+
- 与PyPy兼容
Falcon主页地址:http://falconframework.org/
Falcon使用教程:https://falcon.readthedocs.io/en/stable/
Falcon使用案例:
# sample.py
import falcon
class QuoteResource:
def on_get(self, req, resp):
"""Handles GET requests"""
quote = {
'quote': (
"I've always been more interested in "
"the future than in the past."
),
'author': 'Grace Hopper'
}
resp.media = quote
api = falcon.API()
api.add_route('/quote', QuoteResource())
$ pip install falcon
$ gunicorn sample:api
16. web2py
web2py是一个免费的开源全栈框架,用于快速开发快速,可伸缩,安全和可移植的数据库驱动的基于Web的应用程序。它是Google在web.py基础上二次开发而来的,兼容GAE。Web2py框架源于RoR和Django思想的启发,奉行约定优于配置的想法,web2py中有很多合理的默认值,允许开发人员快速启动。Web2py宣称:提供全栈式解决方案,提供可能需要的一切模块。
Web2py框架自带了很多模块,比如内置服务器,生成HTML的帮助器,表单,验证器等等,但是Web2py多数据库引擎的支持很简单。其他内置的功能有:
- juery和Ajax建站助手;
- 调度程序和cron;
- 双因子认证助手;
- 文本消息发送器;
- 事件工单系统,允许自动将生产环境中发生的问题分配给开发人员。
web2py主页地址:http://www.web2py.com/
web2py仓库地址:https://github.com/web2py/web2py/
17. Quixote
Quixote是使用Python编写基于Web的应用程序的框架。 它的目标是依次实现灵活性和高性能。 Quixote应用程序的结构往往类似于传统应用程序。 格式化网页的逻辑由Python类和函数组成。 表示逻辑(presentation logic)和“后端”逻辑的分隔不由Quixote强制执行。 相反,它鼓励您使用传统技术。 例如,一种解决方案是将表示逻辑放在其自己的子包中。
Quixote主页地址:http://www.quixote.ca/
18. API Star
API Star是一个新的Web微框架,只支持Python 3,其特性使用了Python 3.5中引入的类型提示。API Star使用内置的类型提示实现以简洁、声明式的构建验证模式表示,然后绑定这些模式来请求处理函数。可以使用它来构建静态文档,将其集成到Web框架中,或将其用作与其他API进行交互的客户端库。
API Star是用于处理OpenAPI或Swagger模式的工具包。 它允许您:
- 构建API文档,并提供一系列可用主题。
- 验证API模式文档,并提供上下文错误。
- 使用动态客户端库发出API请求。
API Star另一个突出的特性是依赖注入机制。这是一个更强大、更智能中间件的替代品。比如可以编写一个所谓的Component,它将使用当前经过身份验证来提供给用户视图。在视图级别,只需要明确声明它将需要User实例,其他事情API Star就会在幕后自动完成。
自动依赖注入优于常规中间件的优点是组件不会有其他未使用视图的开销。同样API Star也可以以更传统,同步性的,兼容WSGI的方式在asyncio上运行。
最后与API Star捆绑在一起的其他模块都非常标准:比如使用jinja2,路由和事件钩子进行模板化扩展支持。
apistar仓库地址:https://github.com/encode/apistar
19. Twisted
这是一个基于异步和asyncio的框架。Twisted是Python中最古老,最成熟的Python异步框架。Twisted最初产生于2002年,其核心是一个名为reactor的事件驱动网络引擎,用于调度和调用用户定义的回调。开始的时候开发人员必须通过定义函数并在操作成功和失败时分别传递它们来使用显式回调。
后来Twisted引入了inlineCallbacks,用于编写异步代码程序,这些代码与常规同步代码一样简单易读。这个解决方案非常适合Python的语法,并且极大地影响了标准库asyncio中的现代异步工具包。
Twisted框架的最大优点是虽然本身只是一个捆绑很少的引擎,但支持许多其他扩展可用于扩展其功能,比如从低级网络编程(TCP/UDP)和高级应用程序(HTTP,IMAP,SHH等)。所以,Twisted天然适合编写专业服务,但不适合常规Web应用程序。开发人员必须自己编写很多东西才能实现Django中自带那些功能。Twisted目前开发和维护还很活跃,正在努力迁移代码到Python 3,但许多第三方模块还存在兼容性问题。
Twisted主页地址:https://twistedmatrix.com/trac/
Twisted使用案例:
from twisted.web import server, resource
from twisted.internet import reactor, endpoints
class Counter(resource.Resource):
isLeaf = True
numberRequests = 0
def render_GET(self, request):
self.numberRequests += 1
request.setHeader(b"content-type", b"text/plain")
content = u"I am request #{}n".format(self.numberRequests)
return content.encode("ascii")
endpoints.serverFromString(reactor, "tcp:8080").listen(server.Site(Counter()))
reactor.run()
20. Sanic
Sanic是基于asyncio-Python的异步编程工具箱,与Python 3.4版本的标准库捆绑在一起。Sanic的开发基于Sanic需要掌握asyncio思想,涉及协程的理论知识,并发编程以及关于应用程序中数据流的推理。Sanic在处理长连接时特别有用,比如WebSocket,如果需要支持WebSockets或进行大量持久的外部API调用,Sanic是个非常不错的选择。
Sanic的另一个用例是编写 “glue-web App”,它可以作为两个具有不兼容API的子系统之间的代理。
Sanic框架非常快。其中一个依赖项是Uloop,它用来替换asyncio的内置事件循环的替代品。 Uloop是libu的包装器,与Node.js相同的引擎。根据uloop官方文档,可以让 asyncio的效率提高了2-4倍。
就功能方面Sanic模仿Flask,比如通过共享Blueprints的概念,微小的子应用程序,允许开发人员在更大的应用程序中拆分和组织其代码。对于光光是数据增删改查CRUD应用,Sanic也不是一个好的选择。
Sanic是Python 3.6以上版本的网络服务器和网络框架,旨在快速发展。 它允许使用Python 3.5中添加的async/await语法,这使您的代码无阻塞且快速。
该项目的目标是提供一种简单的方法来启动和运行高性能的HTTP服务器,该服务器易于构建,扩展和最终扩展。
Sanic主页地址:https://sanicframework.org/
Sanic使用教程:https://sanic.readthedocs.io/en/latest/
Sanic仓库地址:https://github.com/sanic-org/sanic
Sanic使用示例:
from sanic import Sanic
from sanic.response import json
app = Sanic("App Name")
@app.route("/")
async def test(request):
return json({"hello": "world"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
21. Japronto
在高性能编程领域,有著名的C10K甚至C10M问题,Python Web应用怎么实现每秒处理100W的请求呢?这就是Python把asyncio添加到标准库时想要实现的目标。Japronto是一个基于asyncio的微框架。通过使用uloop和PicoHTTPParser,Japronto实现了每秒处理100万个请求。 Uloop上面说了是基于libu的asyncio后端,而PicoHTTPParser是用C编写的轻量级HTTP头解析器。
Japronto框架的所有核心组件也用C实现,还使用各种低层优化和技巧来调整性能。Japronto主要用于高性能特殊任务,它们无法通过大而冗余的主流框架实现。
Japronto还为REST API的微服务开发提供坚实的基础,开发人员只需要设置路由并确定哪些路由应使用同步或异步处理程序。
Japronto特点如下:
- HTTP 1.x实现,支持分块上传
- 全面支持HTTP流水线
- 具有可配置reaper的Keep-alive 连接
- 支持同步和异步视图
- 基于分叉的Master-multiworker模型
- 支持更改时重新加载代码
- 简单的路由
Japronto仓库地址:https://github.com/squeaky-pl/japronto/
Japronto使用案例:
from japronto import Application
def hello(request):
return request.Response(text='Hello world!')
app = Application()
app.router.add_route('/', hello)
app.run(debug=True)
22. TurboGears
TurboGears是一个数据驱动的全栈Web应用程序Python框架。它旨在克服各种广泛使用的Web和移动应用程序开发框架的不足之处。它使软件工程师能够以微不足道的设置开始开发Web应用程序。
TurboGears使Web开发人员可以使用各种JavaScript开发工具来简化Web应用程序开发。您可以借助SQLAlchemy,Repoze,WebOb和Genshi等元素来开发Web应用程序,这比其他现有框架要快得多。它支持不同的数据库和Web服务器,例如Pylons。该框架采用MVC(模型-视图-控制器)设计,并结合了强大的格式,令人难以置信的对象关系映射器(ORM)和服务器和程序的Ajax。使用TurboGears的组织合并了Bisque,ShowMeDo和SourceForge。
TurboGears特点:
- 从微框架开始,然后扩展到全栈解决方案
- 与编写函数一样自然的代码
- 强大而灵活的对象关系映射器(ORM),具有真正的多数据库支持
- 支持水平数据分区(又名分片)
- 一个新的小部件系统,使构建AJAX繁重的应用程序更加容易
- 支持多种数据交换格式
- 内置可扩展的可插拔应用程序和标准WSGI组件
- 设计者友好的模板系统,非常适合程序员
TurboGears主页地址:https://turbogears.org/
TurboGears使用案例:
from wsgiref.simple_server import make_server
from tg import MinimalApplicationConfigurator
from tg import expose, TGController
# RootController of our web app, in charge of serving content for /
class RootController(TGController):
@expose(content_type="text/plain")
def index(self):
return 'Hello World'
# Configure a new minimal application with our root controller.
config = MinimalApplicationConfigurator()
config.update_blueprint({
'root_controller': RootController()
})
# Serve the newly configured web application.
print("Serving on port 8080...")
httpd = make_server('', 8080, config.make_wsgi_app())
httpd.serve_forever()
运行命令:
$ pip install TurboGears2
$ python myapp.py
23. BlueBream
BlueBream是使用Python编程语言编写的免费开放源代码Web应用程序服务器,框架和库。 该工具提供了组件体系结构,事务对象数据库,紧密集成的安全模型和许多其他功能。 它是由Zope社区创建的,并由Zope基金会拥有。 Bluebream是根据与GSD兼容的BSD之类的BSD的Zope公共许可证获得许可的。该框架最适合分配到各种可重用和合适的部分中的中型和大型活动。
BlueBream构建在Zope工具套件(ZTK)之上,该套件可满足“企业”应用程序对稳定性和可伸缩性的苛刻要求。 对于“关注点分离”,它使用Zope组件体系结构(ZCA),以便可以构建高度内聚的可重用组件(zope.component)。 它强调的模块化和可配置性是BlueBream的核心。 将其与用Python编写的功能强大且定义明确的Buildout系统结合使用,可轻松构建强大的应用程序。
BlueBream使用Zope组件标记语言(ZCML)注册组件。 这种基于XML的配置语言(zope.configuration)提供了无限的灵活性。 事务性Zope对象数据库(ZODB)可确保强大且易于使用的持久性。 BlueBream具有使用Paste,PasteScript和PasteDeploy的Python Web服务器网关接口WSGI。还包括:
- 一个对象发布者,用于在网络上发布Python对象,强调WSGI兼容性(zope.publisher),
- 一种符合XHTML的模板语言(zope.pagetemplate),
- 灵活的安全体系结构,为可插拔安全策略(zope.security)提供了一种通用机制,
- 模式引擎(zope.schema),
- 自动表单生成机器(zope.formlib),
- 单元和功能测试框架(zope.testing和zope.testbrowser),
- 以及更多经过良好测试的核心和第三方软件包。
BlueBream主页地址:https://quintagroup.com/cms/python/bluebream
24. Pylons
Pylons Web框架旨在以简单明了的方式构建Web应用程序和站点。 它们的范围从最小的一个Python模块到用于较大和更复杂的Web应用程序的实质性目录布局。
Pylons随附的项目模板可帮助引导新的Web应用程序项目,或者可以从头开始并完全根据需要进行设置。
Pylons本身只有两千行左右的Python代码,不过它还附带有一些几乎就是Pylons御用 的第三方模块。Pylons只提供一个架子和可选方案,你可以根据自己的喜好自由的选择Template、ORM、form、auth等组件,系统高度可定制。我们常说Python是一个胶水语言(glue language),那么我们完全可以说Pylons就是一个用胶水语言设计的胶水框架。
Pylons的特点:
- 一个使用Python编写Web应用程序变得容易的框架
- 利用基于组件的极简主义,使其易于扩展
- 利用有关Python的现有知识
- 可扩展的应用程序设计
- 快速高效,每个请求的调用堆栈非常小,可提供最佳性能
- 使用现有且经过良好测试的Python软件包
Pylons主页地址:https://www.pylonsproject.org/
Pylons仓库地址:https://github.com/Pylons/pylons
Pylons使用案例:
from paste.httpserver import serve from pylons import Configurator, Response
class Hello(object):
def __init__(self, request):
self.request = request
def index(self):
return Response(body=”Hello World!”)
if __name__ == ‘__main__’:
config = Configurator() config.begin() config.add_handler(‘home’, ‘/’, handler=Hello, action=’index’) config.end()
serve(config.make_wsgi_app(), host=’0.0.0.0’)
25. repoze.bfg
repoze.bfg是一个小型,快速,扎实的开源Python Web开发框架。 它使现实世界中的Web应用程序开发和部署变得更加有趣,更加可预测并且更加高效。
repoze.bfg介绍地址:https://pypi.org/project/repoze.bfg/
repoze仓库地址:https://github.com/repoze
26. Hug
Hug是一个Python 3 API开发框架。 它的设计使软件工程师可以先开发一个API,然后在需要时再使用它。 Hug框架通过提供各种接口来简化API开发。 这就是为什么该框架被称为Python 3中最快的框架的主要原因。
Hug的主要特点:
- 支持自动文档
- 注释驱动的验证
- 内置版本管理
- 遵守Cython
- 可以用作Python库
Hug框架包含尽可能少的集成和尽可能少的代码,保持功能正常并提供出色的性能。 另外,Hug的社区目前正在发展。 这表明该框架的需求,并证明只要出现问题,开发人员都可以找到帮助。
Hug的主页地址:http://www.hug.rest/
Hug的仓库地址:https://github.com/hugapi/hug
Hug的Pypi地址:https://pypi.org/project/hug/
Hug的使用示例:
# filename: happy_birthday.py
"""A basic (single function) API written using hug"""
import hug
@hug.get('/happy_birthday')
def happy_birthday(name, age:hug.types.number=1):
"""Says happy birthday to a user"""
return "Happy {age} Birthday {name}!".format(**locals())
运行:
hug -f happy_birthday.py
27. FastAPI
FastAPI是基于Python的现代框架。 它最初被设计为易于使用,以确保最佳的开发体验。 迄今为止,FastAPI是使用Python 3.6+构建API最快的框架之一。
该框架具有Flask的几个特征,包括其简单性。 整个框架基于Starlette构建,并包含其大部分功能(模板,WebSocket和GraphQL支持)。
FastAPI框架提供:
- 开发速度提高200%至300%
- 减少40%的错误
- 调试时间更少
- 减少代码重复
- 自动交互式文档
FastAPI并没有与任何数据库紧密耦合。 但是,它支持您需要的数据库。 使用FastAPI,您可以自由地按需要构建项目,甚至可以使用Flask项目之一中的大多数相同文件。
唯一的缺点是社区很小。 但这是因为FastAPI是一个相对较新的框架。
FastAPI主页地址:https://fastapi.tiangolo.com/
FastAPI仓库地址:https://github.com/tiangolo/fastapi
FastAPI的PyPI地址:https://pypi.org/project/fastapi/
FastAPI使用示例:
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
运行:
$ uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
28. Grok
**Grok是一个基于Zope工具箱的全栈开发框架。**它是一个开放源代码框架,专门用于加速Web应用程序开发过程。开发人员必须使用敏捷开发,才能在Grok的帮助下完成工作。
Grok将在独立网络库的帮助下帮助开发人员访问全面的网络。他们可以根据自己的任务要求选择一个。该框架带有与TurboGears和Pylons相似的UI。它具有组件体系结构,可以帮助开发人员减少应用程序开发的不可预测性。
Grok的特点:
- 支持Web自定义应用程序开发
- 增强的Web应用开发
- 提升核心技术
Grok主页地址:http://grok.zope.org/
29. Dash
Dash是用于构建分析Web应用程序的开源Python框架。 对于对网络开发不太熟悉的Python数据科学家来说,这尤其有用。
Dash有两个基本优点:
- 它允许您仅使用Python代码构建高度交互的应用程序。
- 使用Python工具的强大功能来处理数据非常简单。
Dash应用程序是运行Flask并通过HTTP请求与JSON数据包通信的Web服务器,前端使用React.js渲染组件。
使用Dash开发的应用程序将在Web浏览器中呈现,并且可以部署到服务器。 这也意味着Dash应用程序本质上是跨平台且可移动的。
Dash开发人员可以访问基础的Flask实例及其所有可配置属性。 为了扩展Dash应用程序的功能,开发人员还可以使用丰富的Flask插件集。
Dash主页地址:https://plotly.com/dash/
Dash仓库地址:https://github.com/plotly/dash/
30. Django
Django和Larael最初都是借鉴了RoR的强大思想(动态、DDD、约定优于配置、低重复、及时反馈)。Django框架使用了类MC的MT(模型、视图、模板)模式,用Django ORM和数据库联系。
Django ORM内置的管理面板,可以轻松实现数据库内容的管理。使用很少的配置就可能,自动生成数据库模型。
视图可以包括函数和类,视图的URL路由分配在urls.py文件中完成,可以设计出完美优雅的URL调度
Django的模板的系统则相当简单,甚至不支持直接嵌入代码,需要预先生成Tag、Filter才能调用。
Django支持强大的解决方案:
- 全栈模式,内置了大量所有必须的模块cache、session、feed、orm、geo、auth。
- 同时也支持"内置电池"(batteries included)模式。
Django是典型的"大而全"的逻辑,这可以极大的方便大多数开发者。但是这就导致其灵活性不足。要引入其他更好的第三方优秀组件就基本上很难,比如想要在Django里用SLAlchemy或Mako,需要打上很多补丁,而且会导致管理面板,授权,会话处理或生成表单等功能都不能使用。
当然Django最人性化的地方是其强大的社区支持和详细文档完美的文档。文档在安装后就完全嵌入系统的各个部分,使用非常方便,这使得其开发的入门门槛很低。
使用Django,您可以制作从小型项目到复杂网站的任何Web应用程序。凭借其灵活性,Django也可用于制作MVP,从而使初创企业能够优化其时间和预算。
Django主页地址:https://www.djangoproject.com/
Django使用示例:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
参考资料:
- https://steelkiwi.com/blog/top-10-python-web-frameworks-to-learn/
- https://www.jiangweishan.com/article/houtduan1324321321.html
- https://blog.digitalogy.co/best-python-frameworks-for-web-development-2020/
- https://www.open-open.com/lib/view/open1392513977741.html
最后
以上就是满意钢铁侠为你收集整理的【Python Web】30个Python Web开发框架介绍1. Bobo2. Bottle3. CherryPy4. Cyclone5. Flask6. Itty-Bitty7. Klein8. Morepath9. ObjectWeb10. Pecan11. Pyramid12. Tornado13. web.py14. Wheezy Web15. Falcon16. web2py17. Quixote18. API Star19. Twisted20. Sanic21. Japronto的全部内容,希望文章能够帮你解决【Python Web】30个Python Web开发框架介绍1. Bobo2. Bottle3. CherryPy4. Cyclone5. Flask6. Itty-Bitty7. Klein8. Morepath9. ObjectWeb10. Pecan11. Pyramid12. Tornado13. web.py14. Wheezy Web15. Falcon16. web2py17. Quixote18. API Star19. Twisted20. Sanic21. Japronto所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复