在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题。

一、为什么要使用框架?

为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应用、系统应用)跟建造房子的过程一样,需要先打地基,搭好骨架,然后一块砖一块砖叠上去。

而开发一个应用呢?同样也需要一个好的架构设计,数据库建模,然后一个模块一个模块使用代码实现。

如果开发一个软件应用不使用框架,和我们建房子时,每一块砖、每一根钢筋都需要自己生产出来本质上是一样的。

显而易见,如果在建造房子之前,每一块砖头、每一种建材,都需要我们自己去生产的话,建造房子的效率是极低的,甚至可能一辈子也无法把房子建造好。

在开发应用系统时,使用框架可以带来如下好处:

大大提升开发效率

让应用开发更加规范、拓展性更强

让程序员把更多的精力放在业务逻辑的实现上,而不是重复、而复杂的基础环境上(比如web服务器、底层实现等)

二、为什么使用Django和Flask框架?

在Python编程语言的世界里,功能最强大、最流行的两个框架。

不仅在web后端开发、微服务开发,同时在ERP系统开发、API接口开发等领域,这两个框架应用非常广泛。

三、Django和Flask的区别

1.形象类比

如果Django类似于精装修的房子,自带豪华家具、非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便。

而Flask类似于毛坯房,自己想把房子装修成什么样自己找材料,买家具自己装。材料和家具种类非常丰富,并且都是现成免费的,直接拿过去用即可。

2.在体量上的区别

Flask:

小巧、灵活,让程序员自己决定定制哪些功能,非常适用于小型网站。

对于普通的工人来说将毛坯房装修为城市综合体还是很麻烦的,使用Flask来开发大型网站也一样,开发的难度较大,代码架构需要自己设计,开发成本取决于开发者的能力和经验。

Django:

大而全,功能极其强大,是Python web框架的先驱,用户多,第三方库极其丰富。

非常适合企业级网站的开发,但是对于小型的微服务来说,总有“杀鸡焉有宰牛刀”的感觉,体量较大,非常臃肿,定制化程度没有Flask高,也没有Flask那么灵活。

3.通过大数据统计分析

全球著名的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

4.完成同样一个Hello World功能

使用Flask来完成:

第一步,安装Flask,pip install flask

第二步,创建my_first_app.py文件,添加如下代码

完成最简单的Hello World功能,Flask只需要7行代码,非常简单、方便。

使用Django来完成:

第一步,安装Django,pip install django

第二步,创建工程项目目录,django-admin startproject myproject

第三步,创建子应用,python manage.py startapp myapp

第四步,在myapp应用所在目录中的views.py文件中,添加如下代码

第五步,在myapp应用所在目录中创建urls.py路由文件,并添加如下代码

第六步,在主路由文件中添加路由。

从上面的操作步骤可知,实现同样的一个功能,往往Flask较为简单,代码较少,而Django所涉及到的流程较多,工程项目结构清晰,在大型项目中具有优势。

四、在实际工作中如何选择这两个框架呢?

如果你想搞懂Python web开发WSGI协议原理以及实现过程、或者你想灵活定制组件,完全DIY你的应用、想实现微服务,那么建议你选择Flask。

如果你关注产品的最终交付、想快速开发一个大的应用系统(比如新闻类网站、商城、ERP等),那么建议你选择Django,你想得到的功能它都有,想不到的功能它也有。

五、如何才能学好框架呢?

1.需要先学习框架的基础知识、基本实现原理。

2.结合项目实践,提升编码能力和业务逻辑的理解。

3.翻看框架源码,深入理解源码精髓。(进阶)

python flask和django_真正搞明白Python中Django和Flask框架的区别相关推荐

  1. python的django_真正搞明白Python中Django和Flask框架的区别

    在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...

  2. 一文搞明白Python并发编程和并行编程

    目录 前言 一.基础知识 1.并行和并发 (1)定义 (2)联系 2.进程.线程和协程 (1)定义 (2)联系 3.生成器 (1)yield (2)send, next (3)yield from 4 ...

  3. python flask与django的区别_真正搞明白Python中Django和Flask框架的区别

    Django和Flask的区别 1.形象类比 如果Django类似于精装修的房子,自带豪华家具.非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便. 而Flask类似于毛坯房,自己想把房子装修 ...

  4. python分布爬虫_13天搞定Python分布爬虫(第七天)(Scrapy)

    43-爬虫的基本使用 pip install Scrapy 注:windows平台需要依赖pywin32,pip install pypiwin32 创建工程:开发工具命令行(Terminal):sc ...

  5. python基础知识-一篇文章搞定Python全部基础知识

    原标题:一篇文章搞定Python全部基础知识 前言: 1.Python软件安装 第一章.字符串及数字变量 1.变量 要点提炼:Python变量为强类型动态类型.换言之,变量很任性,你给他int,他就是 ...

  6. python数据分析建模-十分钟搞懂“Python数据分析”

    原标题:十分钟搞懂"Python数据分析" 引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架.其次,讲解"如何通过Python 函数或代码和统计学知 ...

  7. python爬虫分布图_13天搞定Python分布爬虫!成为炙手可热的爬虫工程师

    原标题:13天搞定Python分布爬虫!成为炙手可热的爬虫工程师 1.什么是爬虫? 网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么爬虫就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根 ...

  8. python和c混合编程 gil_终于搞明白python与gil

    感想:东看一篇文章西看一篇文章,终于把gil的概念理顺了 我们都知道,比方我有一个4核的CPU,那么这样一来,在单位时间内每个核只能跑一个线程,然后时间片轮转切换.但是Python不一样,它不管你有几 ...

  9. 百道Python面试题实现,搞定Python编程就靠它

    机器之心报道 机器之心编辑部 想要备战 Python 面试,这两个项目有千道 Python 问题与实现. 之前机器之心介绍了 PHD 大牛的求职之路,很多读者感觉这位大牛太厉害了,他的经历对我们帮助不 ...

最新文章

  1. 数钱数到手抽筋游戏的测试用例
  2. React 项目开发问题积累
  3. LeetCode 2089. 找出数组排序后的目标下标
  4. “有趣”的投影:当PCA失效时怎么办?
  5. 【英语学习】【Daily English】U05 Places L01 How can I get to the city museum?
  6. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 130: invalid continuat
  7. C++ for (auto it:myset) 是什么意思 引用
  8. linux PATH环境变量设置及查看
  9. gif生成工具(免费)
  10. FlexPaper — 可以用来仿豆丁网、百度文库的PDF在线阅读功能
  11. 轨道客流预测TransCAD公交分配结果详解
  12. 基于ASP.NET的企业进销存管理系统
  13. html如何插入一张图片,html如何插入图片
  14. Mars3D开发基础学习:三维场景 Map
  15. 解析mac苹果电脑与Windows电脑的区别。他们各自有什么优势?
  16. 一文搞懂什么是遗传算法Genetic Algorithm【附应用举例】
  17. 【完全解析】Lumion 9.0 新功能与改进
  18. 什么情况下会出现笛卡尔积
  19. 维修销售条码打印机斑马ZebraZT620
  20. 测试您的杀毒软件的代码(不是病毒)

热门文章

  1. 钉钉api 获取 accesstoken_钉钉开放平台第三方 Python SDK,快速实现钉钉API开发
  2. 英特尔 开源降噪库 api_Google的新操作系统,英特尔的开源VR耳机以及更多新闻
  3. 语言认知偏差_认知语言学可以教给开发人员什么
  4. 为什么OpenStack与其他开源项目不同
  5. 系统权限安全责任书_权限越大,责任越大
  6. JavaScript之call,bind,apply方法及 this 的用法辨析
  7. Bootstrap导航条中组件的排列
  8. HTML time元素
  9. es6 什么是async函数
  10. 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Eigen库