在谈 Python 中 Django 框架和 Flask 框架的区别之前,我们需要先探讨如下几个问题。
一、为什么要使用框架?
为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web 应用、系统应用)跟建造房子的过程一样,需要先打地基,搭好骨架,然后一块砖一块砖叠上去。
而开发一个应用呢?
同样也需要一个好的架构设计,数据库建模,然后一个模块一个模块使用代码实现。
如果开发一个软件应用不使用框架,和我们建房子时,每一块砖、每一根钢筋都需要自己生产出来本质上是一样的。
显而易见,如果在建造房子之前,每一块砖头、每一种建材,都需要我们自己去生产的话,建造房子的效率是极低的,甚至可能一辈子也无法把房子建造好。
在开发应用系统时,使用框架可以带来如下好处:
1、大大提升开发效率;
2、让应用开发更加规范、拓展性更强;
3、让程序员把更多的精力放在业务逻辑的实现上,而不是重复、而复杂的基础环境上(比如 web 服务器、底层实现等);
大家在学 python 的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的 Python 学习扣 qun:784758214,这里是 python 学习者聚集地
二、为什么使用 Django 和 Flask 框架?
1、在 Python 编程语言的世界里,功能最强大、最流行的两个框架。
2、不仅在 web 后端开发、微服务开发,同时在 ERP 系统开发、API 接口开发等领域,这两个框架应用非常广泛。
三、Django 和 Flask 的区别
◆ 形象类比
如果 Django 类似于精装修的房子,自带豪华家具、非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便。
而 Flask 类似于毛坯房,自己想把房子装修成什么样自己找材料,买家具自己装。
材料和家具种类非常丰富,并且都是现成免费的,直接拿过去用即可。
◆ 在体量上的区别
Flask:小巧、灵活,让程序员自己决定定制哪些功能,非常适用于小型网站。
对于普通的工人来说将毛坯房装修为城市综合体还是很麻烦的,使用 Flask 来开发大型网站也一样,开发的难度较大,代码架构需要自己设计,开发成本取决于开发者的能力和经验。
Django:大而全,功能极其强大,是 Python web 框架的先驱,用户多,第三方库极其丰富。
非常适合企业级网站的开发,但是对于小型的微服务来说,总有“杀鸡焉有宰牛刀”的感觉,体量较大,非常臃肿,定制化程度没有 Flask 高,也没有 Flask 那么灵活。
◆ 通过大数据统计分析
全球著名的 stackshare 网站对 Django 和 Flask 这两个框架的调查分析。
从全球开发者关注程度上:Django 为 5.8K,Flask 为 3.31K
从国外招聘网站岗位需求上:提到 Django 的有 1.77K,Flask 为 942
从著名的问答网站 stack overflow 提问数量上:Django 196K,Flask 为 27.6K。
从全球著名的代码托管平台上的 star 和 fork 数量上:Django 分别为 41.3K、17.8K,Flask 分别为 43.8K、12.3K。
◆ 完成同样一个 Hello World 功能
使用 Flask 来完成:
第一步,安装 Flask,pip install flask
第二步,创建 my_first_app.py 文件,添加如下代码
完成最简单的 Hello World 功能,Flask 只需要 7 行代码,非常简单、方便。
使用 Django 来完成:
第一步,安装 Django,pip install django
第二步,创建工程项目目录,django-admin startprojectmyproject
第三步,创建子应用,python manage.py startappmyapp
第四步,在 myapp 应用所在目录中的 views.py 文件中,添加如下代码。
第五步,在 myapp 应用所在目录中创建 urls.py 路由文件,并添加如下代码
第六步,在主路由文件中添加路由。
从上面的操作步骤可知,实现同样的一个功能,往往 Flask 较为简单,代码较少,而 Django 所涉及到的流程较多,工程项目结构清晰,在大型项目中具有优势。
四、实际中如何选择这两个框架
如果你想搞懂 Python web 开发 WSGI 协议原理以及实现过程、或者你想灵活定制组件,完全 DIY 你的应用、想实现微服务。那么建议你选择 Flask。
如果你关注产品的最终交付、想快速开发一个大的应用系统(比如新闻类网站、商城、ERP 等)。那么建议你选择 Django,你想得到的功能它都有,想不到的功能它也有。
五、如何才能学好框架
1、需要先学习框架的基础知识、基本实现原理
2、结合项目实践,提升编码能力和业务逻辑的理解
3、翻看框架源码,深入理解源码精髓(进阶)