三个目前最火的Python Web开发框架,你值得拥有!

简介: 三个目前最火的Python Web开发框架,你值得拥有!

1240

今天聊下Python Web框架,Python Web框架大致分成三类,分别是Full-Stack Web框架、Non Full-Stack Web框架、Asynchronous 异步框架。


什么是Web框架

框架的意思就是把基础的,常用的功能都写好了。比如:URL分发(路由)、数据库读写(ORM)、表单,admin后台管理等, 你只需要理解怎么调用这个框架,让你把精力放在业务逻辑实现上。

1240

框架怎么分优劣

我们通常说的某某框架用起来舒服,用起来方便,是基于哪些考虑的呢?

我相信不同的开发人员说出的原因是不一样的。有的喜欢功能强大的框架,有的喜欢易上手的框架,有的喜欢小巧,配置灵活的框架。

有的开发者喜欢框架功能很全,不用自己造轮子,比如Django框架,它提供的功能非常全面,比如(cache、session、登陆、auth授权等等),和它强大的中间件,提供全方案Web开发支持。我们把这种框架叫做Full-Stack Web框架。

当然功能强大和全面的反面就是有点复杂(相对的),有点臃肿,不太灵活。所以Django上手要慢一点,自己造一个轮子替换Django某些内置功能或者使用第三方功能时不太灵活。

有的喜欢框架小巧,灵活,就像Flask框架一样。跟Django相反,Flask小巧、灵活,它的很多功能需要开发者以插件的形式向里安装,你也可以自己定制。这类不提供全方案开发支持的框架,我们叫做Non Full-Stack Web框架。

有的喜欢速度,喜欢框架本身的速度很快,喜欢I/O性能吞吐高并发,像Tornado和Sanic框架。它们是异步框架,I/O性能相对就高一些。当然异步编程的理解难度要大一点。

上面解释了什么是Full-Stack Web框架、Non Full-Stack Web框架和Asynchronous 异步框架。下面具体介绍这三个下面的代表框架。

一、Django

Django是Full-Stack Web框架的代表,功能非常全面和成熟,开发文档很完备。它在Python Web开发框架的占有率应该是第一。Django的宗旨就是尽可能的提供所有功能,让你用尽可能少的代码完成业务。官方的说法是,如果你的开发日期非常紧,那么选用Django是正确的做法。 我们自己开发的项目也全都选用的Django。

缺点:

在urls.py里配置URL路由有点麻烦;

模板不能像php一样在模板插代码;

数据库ORM组装出来的sql语句性能较差;

二、Flask

Flask算是Non Full-Stack Web框架代表,是一个轻量级的Web Framework,它在中国的应用其实挺广的。它的设计目的是帮助构建一个稳定的Web基础应用。它的灵活性体现在,它的模块化设计可以轻松适合开发者的需求。Flask跟Django比起来,你可以自己造轮子,也可以是以插件的形式使用第三方库。使用Restful request的风格,很适合开发web api,Flask也更加pythonic。

今天正好是愚人节,其实Flask是在2010年4月1日愚人节这天发布的,作者本意是想在这一天整蛊一番的,谁知Flask在后来却越来越火了。


1240



关于怎么快速学python,不管你是小白还是大牛,小编我都欢迎,不定期分享干货每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实



三、Tornado

Tornado其实也是Non Full-Stack Web框架。因为它支持异步,所以就单独说一下。

跟上面Django和Flask比起来的话,好像没啥可说的了,就是IO性能优秀。官方说能支持1万个并发请求。适合一些高并发项目。

因为一些原因,我对Tornado的印象不太好。16年的时候公司收购了一个项目,然后我去杭州接手这个项目的技术部分,系统是用Tornado开发的。团队是从杭州大厂出来的,设计得非常繁复,说是要支持4万并发的业务。但是到我们买的那天,业务连4千并发都不到。接下来的一年公司为这个项目付出了很大代价。

当然在Python3时代,异步框架还有其他的,比如Sanic,性能测试对比显示,Sanic比Tornado快几丢丢。猿人学网站除了有Python教程,我也正在写Sanic教程,感兴趣的可以去看看。

说了这么多,如何选择Python Web框架?

如果你要开发一个大型项目,比如电商系统,需要各种各样的功能都具备,那么使用Full-Stack Web框架是第一选择。如果是一个像内容系统,功能有限,不需要面面俱到,那么用Non Full-Stack是第一选择。

Python Web框架大约有30多种,我介绍了几个典型的和运用面比较大的,上面三种在国内的公司中也是运用比较广泛的,能熟练用其中一种做开发,应该可以找到个web开发工作。

1240
相关文章
|
14小时前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
【7月更文挑战第13天】在Web开发中,AJAX和Fetch API是实现页面无刷新数据交换的关键。在Flask博客系统中,通过创建获取评论的GET路由,我们可以展示使用AJAX和Fetch API的前端实现。AJAX通过XMLHttpRequest发送请求,处理响应并在成功时更新DOM。Fetch API则使用Promise简化异步操作,代码更现代。这两个工具都能实现不刷新页面查看评论,Fetch API的语法更简洁,错误处理更直观。掌握这些技巧能提升Python Web项目的用户体验和开发效率。
13 7
|
14小时前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
【7月更文挑战第13天】构建现代Web应用的关键在于提供无缝用户体验,这涉及AJAX和Fetch API的异步数据交换以及Python(如Flask)的后端支持。Fetch API以其基于Promise的简洁接口,改进了AJAX的复杂性。例如,一个Flask应用可提供用户数据,前端利用Fetch API在不刷新页面的情况下显示信息。这种结合提升了效率,减少了服务器负载,是现代Web开发的趋势。随着技术发展,预期将有更多工具优化这一过程。
8 3
|
3天前
|
存储 JavaScript 前端开发
WEB三大主流框架之Angular
WEB三大主流框架之Angular
|
3天前
|
存储 JavaScript 前端开发
WEB三大主流框架之Vue.js
WEB三大主流框架之Vue.js
|
3天前
|
XML 前端开发 JavaScript
WEB三大主流框架之React
WEB三大主流框架之React
|
4天前
|
数据采集 前端开发 测试技术
【Python】已解决:(最新版selenium框架元素定位报错)NameError: name ‘By’ is not defined
【Python】已解决:(最新版selenium框架元素定位报错)NameError: name ‘By’ is not defined
10 0
|
10天前
|
JSON 数据格式 Python
Flask实现内部接口----pycharm安装及新建,location代表着文件路径,下面是Python的环境,Flask是由Python开发的框架,Python文件接口ython通过GET发送
Flask实现内部接口----pycharm安装及新建,location代表着文件路径,下面是Python的环境,Flask是由Python开发的框架,Python文件接口ython通过GET发送
|
10天前
|
存储 JavaScript 安全
深入理解与应用:在Web框架中高效管理环境变量
【7月更文挑战第3天】本文阐述了在Web开发中使用环境变量的重要性,如增强安全性和灵活性,并以Django、Flask和Express为例展示了如何管理这些变量。通过`os.environ`或特定库,开发者可以从环境中读取配置,避免敏感信息硬编码。最佳实践包括最小权限、加密、默认值、文档化和环境隔离,确保项目安全和易维护。
34 0
|
13天前
|
分布式计算 并行计算 安全
在Python Web开发中,Python的全局解释器锁(Global Interpreter Lock,简称GIL)是一个核心概念,它直接影响了Python程序在多线程环境下的执行效率和性能表现
【6月更文挑战第30天】Python的GIL是CPython中的全局锁,限制了多线程并行执行,尤其是在多核CPU上。GIL确保同一时间仅有一个线程执行Python字节码,导致CPU密集型任务时多线程无法充分利用多核,反而可能因上下文切换降低性能。然而,I/O密集型任务仍能受益于线程交替执行。为利用多核,开发者常选择多进程、异步IO或使用不受GIL限制的Python实现。在Web开发中,理解GIL对于优化并发性能至关重要。
35 0
|
15天前
|
测试技术
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)