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处理圆角图片、圆形图片的例子
Apr 25 Python
Python学习笔记(二)基础语法
Jun 06 Python
用python读写excel的方法
Nov 18 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
Python 专题四 文件基础知识
Mar 20 Python
Python编写一个闹钟功能
Jul 11 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
Python数据集切分实例
Dec 08 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
python定义具名元组实例操作
Feb 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
中国的第一台收音机
2021/03/01 无线电
PHP学习之字符串比较和查找
2011/04/17 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
session 加入redis的实现代码
2016/07/15 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
Python利用ansible分发处理任务
2015/08/04 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python基于百度云文字识别API
2018/12/13 Python
详解Python 切片语法
2019/06/10 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
考试违纪检讨书
2014/02/02 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
财务稽核岗位职责
2015/04/13 职场文书
2015年征兵工作总结
2015/07/23 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python