Django和Flask框架优缺点对比


Posted in Python onOctober 24, 2019

Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要 Django发布于2005年,Flask创始于2010年年中。

Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前不用花费大量时间在选择应用的基础设施。

Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。

Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互。

一、整体设计方面

首先,两者都是非常优秀的框架。整体来讲,两者设计的哲学是区别最大的地方。

Django提供一站式的解决方案,从模板、ORM、Session、Authentication等等都分配好了,app, admin后台生成, 使用非常方便.

Flask只提供了一些核心功能,非常简洁优雅。它是一个微框架,其他的由扩展提供,但它的blueprint使它也能够很方便的进行水平扩展。

二、路由设计

Django的路由设计是采用集中处理的方法,利用正则匹配。Flask也能这么做,但更多的是使用装饰器的形式,这个有优点也有缺点,优点是读源码时看到函数就知道怎么用的,缺点是一旦源码比较长,你要查路由就不太方便了,但这也促使你去思考如何更合理的安排代码。

三、应用模块化设计

Django的模块化是集成在命令里的,也就是说一开始Django的目标就是为以后玩大了做准备的。每个都是一个独立的模块,为以后的复用提供了便利。

Flask通过Blueprint来提供模块化,自己对项目结构划分成不同的模块进行组织。

四、配置

Django的配置主要还是靠settings.py来做,当然为了Development和Production环境分离,还有一些方法来处理配置。
Flask的配置很灵活,有多种方法配置,不同环境的配置也非常方便。

五、文档

两者都提供了详尽的文档,Flask的文档风格很受我个人喜好,Django的文档也非常优秀,当时用学Django时,就是只看了Django的文档。

六、社区

Django社区很大,各种插件很齐全,大部分情况下你都能找到你想要的。

Flask起步晚,但社区也不小,之前有一次看在github上的star数,两个相差并不远,说明越来越多的人关注它,虽然插件没那么全,但常用的还都是有的,而且质量都比较高。

最后再次说一下,两个都是非常优秀的框架,很多时候选用这些框架是根据实际项目侧重不同来选的:-)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
Python日志logging模块功能与用法详解
Apr 09 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
python中return如何写
Jun 18 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
Python高并发和多线程有什么关系
Nov 14 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
python命令 -u参数用法解析
Oct 24 #Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 #Python
用Python解数独的方法示例
Oct 24 #Python
Python3 sys.argv[ ]用法详解
Oct 24 #Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 #Python
原生python实现knn分类算法
Oct 24 #Python
python KNN算法实现鸢尾花数据集分类
Oct 24 #Python
You might like
php网页后退不再出现过期
2007/03/08 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
在Python中使用模块的教程
2015/04/27 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
Python阶乘求和的代码详解
2020/02/14 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
高三政治教学反思
2014/02/06 职场文书
无房证明范本
2014/09/17 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
JavaScript实现优先级队列
2021/12/06 Javascript