Flask 框架简介
Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了。我们以这些 Web 开发框架作为关键字,在编程之家网中搜索相关课程,查询到的课程数量如下所示:
Web 开发框架 | 相应的课程数量 |
---|---|
Django | 17 |
Flask | 15 |
Tornado | 2 |
其余的框架 | 0 |
由此可见,Django 和 Flask 确实是 Python 领域中最主流的两个 Web 开发框架,本节课我们就来介绍下 Flask 框架的特点,并简单了解下 Flask 与 Django 框架的优缺点对比。
1. Flask 简介
2. Flask 的特点
2.1 微框架
默认情况下,Flask 不包含数据库抽象层、模板引擎、身份认证或其它任何已有多种库可以胜任的功能,如下图所示。然而,Flask 支持用扩展来给应用添加这些功能,应用程序可以很方便的集成这些扩展。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。
2.2 约定优于配置
但是 Flask 遵循约定优于配置(Convention Over Con@R_404_6408@uration),也称作按约定编程是一种软件设计范式。目的在于减少软件开发人员所需要做出的决定的数量,从而将开发变得简单,而又不失去其中的灵活性,开发人员仅仅需要规定应用中不符合约定的部分。
Flask 存在有众多的配置选项,但是在初始状况下,它们都有一个常用的默认值,并会遵循一些惯例。 例如:按照惯例,模板和静态文件分别存储在应用 Python 源代码树下的子目录 templates 和 static 里。虽然这个配置可以修改,但通常不必这么做,尤其是在刚开始学习的时候。
3. Django 简介
Django 是一个遵循 MVC 设计模式的框架。MVC 是 Model、View、Controller 三个单词的简写,分别代表模型、视图、控制器。Django 也是一个 遵循 MVC 设计模式的框架。MTV 是 Model、Template、View 三个单词的简写,分别代表模型、模版、视图 。
4. Django 的特点
与 Flask 的架构相比,两者的区别很明显:
对象关系映射 (ORM, Ojbect Relation Model)
表单处理
模板引擎
后台管理系统
5. Flask 与 Django 的比较
5.1 两个框架的区别
上面我们简单介绍了 Flask 和 Django 这两个 Web 开发框架,下面,我给大家总结一下这两个框架的区别到底在哪里:
Django 就像是一个装潢好的房子(如下图所示),它提供了各种家具,直接入住即可。
默认情况下,不包含数据库抽象、用户认证、表单验证、发送邮件等其它 Web 框架经常包含的功能。Flask 依赖用各种灵活的扩展(比如邮件 Flask Mail,用户认证 Flask Login,数据库 Flask sqlAlchemy)来给Web应用添加额外功能。
5.2 新手入门推荐
Flask 是一个轻量级的 Web 框架,只提供核心服务,较其他同类型框架更为轻便且容易上手,适用于小型团队在短时间内就可以完成功能丰富的中小型网站。与之相比,Django 是一个重量级的 Web 框架,内置许多常用的扩展,这些功能是由官方和社区共同维护的,其健壮性高,有利于保障项目质量。
推荐新手学习 Flask 框架,可以先从 Flask 开始,后使用 Django 重构。因为如果直接上 Django,作为新手,面对 Django 内置的各种繁杂功能产生很多疑惑。
就如同搭积木,如果直接给你一个搭好的模型,再拆开后(逆向过程),让你指出每块积木的作用,你可能会有疑惑。但是让你亲自一步步去搭好后(正向过程),再去拆解模型,你对每块积木的都会有不错的了解。
Flask 开发就像是这个正向过程,自己一步一步去集成想要的扩展,完善网站,每一步都亲自动手做一遍,有助于理解 Web 开发的很多概念。Django 开发就像是逆向过程,Django 已经帮你集成了许多常用的扩展,用户要做的去学习这些扩展的使用。
6. 本课程所需的前置基础知识
- Python 的基本语法;
- Html 的常用标签;
- Css 的基本知识;
- Javascript 的基本语法。
7. 小结
本节介绍了 Python Web 开发的两个框架:Flask 和 Django,并对其进行了对比,使用思维导图总结如下: