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同时兼容python2和python3的8个技巧分享
Jul 11 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
python在linux系统下获取系统内存使用情况的方法
May 11 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
python3+requests接口自动化session操作方法
Oct 13 Python
浅谈python写入大量文件的问题
Nov 09 Python
深入浅析Python中的迭代器
Jun 04 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
Python 发送SMTP邮件的简单教程
Jun 24 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多文件上传类实例
2015/03/07 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP的几个常用加密函数
2016/02/03 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
大学生自我评价范文分享
2014/02/21 职场文书
追悼会主持词
2014/03/20 职场文书
体育活动总结范文
2014/05/04 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers