写在前面
本文的诞生非常偶然,这两天一个小小小学弟问橡皮擦一个陈年旧问题,Python 基础学完了,想学习一个 Python Web 框架,是先学习 Django 呢,还是学习 Flask,现在的公司都用啥?
每次这个问题出现的时候,我都会给拉一个清单,这次咱们直接把它转换成文章吧。
标题就叫做《2022 年,你该学习的 Python Web 框架》
以下涉及的所有框架,都不提供官网和任何学习资料,作为一个合格的程序员,这些要自己能找到。
第一款:Flask
先学这个吧,轻便,灵活,定制性强,重点是上手就能用,而且又流行,
橡皮擦认识很多 Python Web 工程师就拿这个接小活做,==做的又快,来钱也快==。
Logo 是个辣椒的图标,比较火热~
第二款:Django
Python Web 框架中的大哥,大而全,自带了一堆功能,学会了之后,做后台管理系统,安装之后,配置几下就可用。
有一定的学习门槛,框架模式遵循 MTV 模式,即模型,视图,模板。
如果你初学阶段就上手的 django,掌握之后,回过头来看 Flask,==呃,小项目你会毫不犹豫的选择 Flask==。
第三款:tornado
是 Python Web 框架的同时,也是一款异步网络库,使用的是非阻塞 IO,所以处理速度特别快。性能优秀,高并发优秀,但是因为其涉及异步 IP 相关知识,所以对初学者不友好,即学起来难度有那么一丢丢的高
如果你 Python 基础还不错,那 tornado 对你来说也是一个轻量级的 Web 框架,而且支持异步编程和 Web Socket,必须学这个呀。
第四款:Bottle
一个遵循 WSGI 的微型 Web 框架,整个架子就一个几十 K 的文件,里面包含路由,模板,简单的数据访问,6 的飞起。
不过也正是因为它“太简陋"了,学学就会了,所以大家总是在忽略它。
第五款:Sanic
不新不旧,不火不热的框架,基于 Python3.6+实现,支持 async/await 语法,所以也是一个高效框架。
目前的问题就是资料少,生态没有那么好(Sanic 插件文档都几乎没有),不过学习阶段肯定够了,语法非常类似 Flask,所以二者我选 Flask。
但是注意一点 Sanic 是异步框架,性能优于 Flask。
第六款:FastApi
没错,现在大家炒的最火热的”现代“ Python Web 框架,号称性能第一,编码速度第一,文档最简单,还能帮程序员减少错误。
还有一点是新,2019 年的框架,当下又这么火,所以必须学习一下。
其余 Python Web 框架
除了上文提及的框架外,还有一些小众,或为特殊场景准备的轮子框架。
如果你学有余力,都可以涉猎一下。
falcon
一个高性能构建大规模应用以及微服务的 Python Web 框架。
pyramid
以高效率和快节奏的开发能力而出名的 Python Web 框架。
asgineer
支持异步的 Web 框架。
emmett
宣传的是更加专注产品,简化开发过程,简化语法的一个框架。
apidaora
看名字就能猜测一下,它是一款专注于 Python Api 的框架。
hug
hug 的定义是一个 RESTFUL API 的框架,做接口平台用的框架
blacksheep
BlackSheep 是一个异步 Web 框架,语法与 Flask 类似。
index.py
着重优化了路由查找功能,因为号称是最快的 Python Web 框架之一,不过同行都这么称呼自己。但是它的名字实在不讨好,毕竟橡皮擦总是创建一个叫 index.py 的文件。
starlette
一个轻量级的 ASGI 框架,在后面橡皮擦为大家补充一篇介绍 ASGI 知识点的文章。
responder
底层是 starlette,是 kennethreitz 写的,质量很有保证,这个大佬是谁?requests 模块的作者。
clastic
自己搜搜吧,这个不太了解,资料也不多。
molten
同样是一款小巧迷你的开发 API 的框架
aiohttp
写爬虫常用,基于 asyncio 和 异步 Web 框架。
cherrypy
与其它框架不同,cherrypy 有自己的想法,它希望开发者按照面向对象的思路开发 Web 系统,所以可以重点关注一下这个框架。
masonite
以 Django 为竞争对手的框架,你现在应该知道它是啥了吧。
cyclone
Cyclone 将 Tornado API 实现为 Twisted 协议。
django-ninja
好家伙,这个是 Django 和 FastApi 的结合体,官方说的是 Fast Django REST Framework,而且口号是:fast to learn,fast to code,fast to run,厉害,厉害。
web.py
Guido van Rossum 认为这是最好的 Python Web 框架,可惜作者已经不在了。
总结
Python Web 框架非常多,很多并未出现在上文,一个 Python Web 工程师仅需要学习前 6 款即可,剩下的可以工作中进行学习。本文你可以收藏,然后万一哪天用到了呢~