Django与Flask框架对比 详情介绍 示例说明

Django与Flask目前是Python最流行的、热门程度最高的两个框架;不管是初学者学习习也好,面试也好,经常会问两个框架的比较、特点等。而两个框架还是很不一样的。我会以四个方面说一下它们的不同,下面就来看看Django与Flask框架的深度对比吧。
Django与Flask框架对比 详情介绍 示例说明

框架模式对比

Django是一个开源的Python Web应用框架,采用的MVT(可以说是基于MVC模式,演变成Django的MVT模式)的框架模式,即模型Models,视图View和模板Template。而Flask则不是。
Django与Flask框架对比 详情介绍 示例说明

功能(也就是常说的框架轻重量级)

Flask是一个由Python语言写成的轻量级Web框架,它最显著的特点是它是一个“微”框架,有多“微”呢?它本身相当于一个内核,只保留了两个功能,WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。其他几乎所有的功能都要用到扩展。
而Django就不一样了。Django被认为是“大而全”的重量级Web框架,Django原生提供了众多的功能组件,例如:数据库ORM支持、Admin管理站点、用户认证、权限管理、缓存、模板等。基本上我们常使用的功能,框架已经帮我们封装好直接调用就行。
Django与Flask框架对比 详情介绍 示例说明

项目结构

Django的项目结构基本是固定的,每个人写的项目结构基本相差无几,随便给你一个Django项目的文件,你可以清楚的去找功能对应的文件夹(settings是项目整体配置文件、urls是项目的url配置文件、wsgi是项目与WSGI兼容的Web服务器入口、manage是项目管理文件,通过它来管理项目)。
在项目结构上,Flask是灵活的,你可以随意的组织自己的代码,不同的人之间因为习惯不同可能导致最后项目结构布局差异很大, 造成后期代码难以阅读和维护。如果大家都严格遵循Flask推荐的代码布局,那么你会发现最后将得到和Django类似的项目结构布局。
Django与Flask框架对比 详情介绍 示例说明

文档与社区

Django上手比较容易,像项目配置、一些功能的实现在官方文档基本都能找到对应的指引与步骤,目前总的社区人数要更大点。Overstackflow上Django的问题与回答数大概是Flask的3倍以上。
而Flask也有相应的文档,但比之Django还是没有那么完善,而Flask社区人数也没有Django那么多、那么活跃,不过Flask社区目前也在成长,且速度惊人。

总结与示例

总结

  1. Django重量级框架,自带ORM和模板引擎,还提供丰富的工具和组件;而Flask轻量级微框架,只提供了Web框架的核心功能,*、灵活、高度定制。相比起来Django就不那么灵活,如果你想修改框架自带的功能,会比较麻烦。
  2. Django适合企业级网站开发,成熟、稳定、完善,还支持快速开发;而Flask开发大型网站也没有压力,但代码架构需要自己设计,前期项目搭建比较麻烦、耗时,相比Django还没有那么稳定。
  3. Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库;而Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django。
  4. Django和Flask都比较容易上手,Django是模板式的开发,对初学者来说,相当简单(前提是不看底层代码),而Flask想要开发大型网站就得看程序猿的功力了。所以初学者还是推荐先Django再Flask,然后可以试着用Flask去改Django的代码。
    Django与Flask框架对比 详情介绍 示例说明
    示例
    Django像是大众的MQB平台,以平台生产出来的东西,架构已经帮你搭好了,大部分功能也已经有了,如果你想改装这辆车,那就有点麻烦了;而Flask框架就像大众的普通车型,如改装比较火的polo、高尔夫,就一个架子支着四个*,想要什么功能自己改,官方也提供这些配件,但是改装这个过程就比较麻烦了。