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中对list去重的多种方法
Sep 18 Python
解读Python中degrees()方法的使用
May 18 Python
python实现实时监控文件的方法
Aug 26 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
python实现音乐下载的统计
Jun 20 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python图像处理之图像拼接
Apr 28 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函数serialize()与unserialize()的使用方法
2014/08/19 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
js数组的操作详解
2013/03/27 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
python解析xml文件实例分析
2015/05/27 Python
Python读大数据txt
2016/03/28 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
使用Python 统计高频字数的方法
2019/01/31 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
python能做哪些生活有趣的事情
2020/09/09 Python
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
情人节寄语大全
2014/04/11 职场文书
党的群众路线调研报告
2014/11/03 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
浅谈Redis的几个过期策略
2021/05/27 Redis