Django和Flask这两个框架在设计上各方面有啥优缺点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django和Flask这两个框架在设计上各方面有啥优缺点相关的知识,希望对你有一定的参考价值。
DjangoDjango是基于中间件的一个大型框架。框架本身的内容相当丰富,基础部分:模版引擎、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 先学哪个呢
重磅干货,第一时间送达
相似之处
让我们从相似之处开始。
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 之间还有许多相似之处,但对我而言,这是三个主要的相似之处。
了
公众号暗言:
【1】【po】【资料】
意想不到的惊喜哦!
以上是关于Django和Flask这两个框架在设计上各方面有啥优缺点的主要内容,如果未能解决你的问题,请参考以下文章