Django和Flask这两个框架在设计上各方面有啥优缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django和Flask这两个框架在设计上各方面有啥优缺点相关的知识,希望对你有一定的参考价值。

Django
Django是基于中间件的一个大型框架。框架本身的内容相当丰富,基础部分:模版引擎、ORM、表单、路由分发这些标配,还有不少的中间件:登陆、后台管理,这些还是官方中间件,另外还有不少的第三方中间件。关于第三方的我没有详细研究过,质量不太好评论。还有由ROR带起的基于命令的Web开发方式和扩展、还有内建的数据库迁移,基本上你呢想到的Django都有。可以说Django和Python相当匹配,前者是Web开发的万金油,后者是开发领域的万金油。
另外Django这个框架本身还有一个专门的基金会,这个基金会是由Django的母公司成立的,估计有不少用这个框架的公司也对期捐助过。框架本身相当活跃,每隔大概8个月就有一个大版本。
社区也是相当活跃,官方的Community、非官方(StackOverflow)和IRC(据说IRC是比任何一个开源项目都要活跃)基本上你碰到的问题大家都会有解决或者Workout方案。
Flask
FLASK框架本身只包含路由分发,请求和响应的封装和插件系统,在加上作者自己的Werkzeug(处理WSGI)、jinja2(模板引擎)和Flask-SQLAlchemy扩展(Model层),这几个同一个作者的项目构成一个完整的MVC框架。
对于Flask本身,一个微框架,这已经足够了,而且它也只能提供这么多。
如果你需要表单处理,请安装Flask-WTF;如果你需要基于命令的开发模式,请安装Flask-Script和Flask-CLI(这是一个Flask1.0的backport模块);如果你要登陆验证,请装Flask-Login;如果你要后台管理,请装Flask-Admin。什么?!你全部都要?请装Django。
对Flask就是这么一个框架。这是一个典型的社区项目,作者在实现了一个牛X的核心以后,就撒手交给社区。各个插件的文档分散(虽然Flask曾经出了一本书,试图打通各个插件和Flask关系,但是当需要真正使用的时候,查文档还是需要在不同的Chrome Tab里面切换),而且社区插件的质量、支持和活跃度也需要话很大的力气去确认。
Flask这个项目毫无疑问是优秀的:完善的官方文档,详细的教程()还有一个牛X的作者作为光环加持(这里可以看到作者有不少应用广泛的项目)。但是和Django完全不在一个应用层面,我会在下一段作出比较和说明。而且Flask这个项目基本已经处于沉睡期,最新的版本0.10.1是2013年发布的,项目的代码仓库也是比较低的活跃度(大概是一个月10次左右的Commit和PR),1.0的发布从2014年到2016年一直说要发布,一直没有出来。各个插件更新也是停留在2015年中。和Django比较活跃度确实令人捉急。
Flask和Django的应用场景
鉴于Flask和Django的特点,如果你是开发一个REST API的系统,没有复杂的分层和逻辑的话,Flask会是一个不错的选择,因为框架内建的功能已经足够你完成这个任务;又或者,你是打算实现一个大型的系统,需要自己重新实现大部分插件的内容,Flask也还是不错,因为它足够的简单,能让你快速的读懂和扩展。
其他的情况我还是推荐你用回Django。尤其是当你需要安装大量的Flask插件,去实现Django本来就有的功能时,你就应该意识到你需要放弃Flask。
当然这只是个人的看法,也没有绝对这一说,主要还是看你想在框架上花费多少的时间。
参考技术A 不要对比Django和Flask的设计上优缺点,现在你们看到的就是作者或者维护团队对这个框架的理解,也是框架的哲学和精髓。Django是05年开源的,Flask是10年开源的,可以看他们的代码贡献者列表,其实不乏领域内的知名的、优秀工程师。这些年过去了,如果设计有问题早就这么一点点的「掰」过来了,事实上留下来的都是精髓。只能说你更接受那个框架的设计哲学罢了。

Flask 与 Django 先学哪个呢

点击上方“ Python 知识大全 ”,星标公众号
 
   
   
 
重磅干货,第一时间送达

本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验。希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 —— 当然也很有趣!


相似之处


让我们从相似之处开始。


No.  1

Flask 和 Django 都是 Python Web 开发框架,它们使您能够使用 Python 在服务端创建 Web 应用,并使用 html 和 CSS 作为前端,或者使用您喜欢的任何前端框架。


No.  2

可以使用 ORM 或对象关系映射,这基本上意味着,您可以使用 SQLITE,MYSQL,PostgreSQL 和其他利用 ORM 的数据库。

温馨提示:

        Django 默认使用 ORM

        Flask 默认情况下不具备 ORM 功能。需要时可手动添加它。


No.  3  

Django 使用类似于 Jinja 的模板引擎(实际上 Jinja 的灵感来自于 Django 自己的模板系统)


Django 不使用 Jinja,但它有自己的模板引擎。它们看起来很相似,因为正如 Jinja 的网站所说,『它的灵感来自于 Django 的模板系统』。Flask 使用 Jinja 作为其模板引擎。


Jinja 基本上就像 HTML 的 Python(python + html = Jinja),它使您能够向 HTML 添加逻辑,例如 if/else,for 循环和我真正喜欢的模板扩展!


Flask 和 Django 之间还有许多相似之处,但对我而言,这是三个主要的相似之处。


Flask 与 Django 先学哪个呢

差异

Flask 和 Django 的差异还是蛮大的,接下来我们一一探讨。

使用 Flask,您可以获得难以置信的灵活性。在创建 app.py(类似于应用程序的主要逻辑),models.py(在其中存储用于创建数据库表的模型的位置),模板等。您对于应用构建结构有绝对控制权。

使用 Django, 一切都是为您构建的!settings.py(类似于应用程序的配置文件),models.py,urls.py(所有路由的存储位置),模板等。

这就是为什么 Django 的标签是 为 Deadline 所生的框架 的原因。因为所有功能都是内置的,您无需费心创建文件并思考应用结构如何设计。一切已准备就绪,您可以立即开始构建应用。

结论

Flask 和 Django 都有优点和不足,并且每个都有自己的用途和目的。

如果您要开发的应用程序简单而不复杂,那么 Flask 是您的最佳选择。

但是,如果你是初学者并且想使用 Python 进行 Web 开发,我建议您从 Flask 开始。您在 Flask 中学习的内容可以应用于 Django ,因此 Flask 相对来说更加容易。
- end -

推荐阅读

  了
    
    


  
    
    
  

公众号暗言: 【1】【po】【资料】 意想不到的惊喜哦!

以上是关于Django和Flask这两个框架在设计上各方面有啥优缺点的主要内容,如果未能解决你的问题,请参考以下文章

Django和Flask这两个框架在设计上各方面有啥优缺点

Django和Flask这两个框架在设计上各方面有啥优缺点

技术选型Django还是Flask?这是个问题!

Flask

后端框架对比:Flask与Django

Django框架与Flask框架的区别