本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。

Flask 是什么

如果说 Django 是一个开箱即用的自带完善功能的 Web 框架,那么 Flask 就是一个只提供基础结构的微型框架。这一点从它的 GitHub 源码就能看出端倪:

它的核心代码就只有这么多。微型意味着 Flask 本身只提供了简单的核心的功能,但它具备了强大的可扩展性。比如,它不会强制你使用某个 ORM 框架,而是把选择权交给你,让你自己决定集成哪个扩展。

无论如何,都应该学习一下 Flask,因为它让你从零开始,了解一个 Web 框架是如何诞生的:

安装 Flask

Flask 需要 Python3.6 及以上才能使用,最新的async异步支持需要 Python3.7 及以上。

安装 Flask 前可以先创建一个虚拟环境,这样相关的包都放在这个虚拟环境中。

Mac 用户:

## 创建
$ mkdir myproject
$ cd myproject
$ python3 -m venv venv
## 激活
$ . venv/bin/activate

Windows 用户:

## 创建
> mkdir myproject
> cd myproject
> py -3 -m venv venv
## 激活
> venv\Scripts\activate

然后就通过 pip 安装 Flask 即可:

$ pip install Flask

Hello World

Flask 是一个 Web 框架,更准备的说是一个提供接口的后端服务,只需要 5 行代码就能实现一个接口:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

截止到目前,还没见过哪个 Web 框架是这么玩的,有点颠覆对 Web 框架的认知,印象中的 Web 框架都是有点庞大的,Flask 却很轻巧的就实现了。

运行后会在控制台输出:

> set FLASK_APP=hello
> flask run
 * Running on http://127.0.0.1:5000/

浏览器访问http://127.0.0.1:5000/就会看到Hello, World!字样。

代码解析

这几行代码会做这 4 件事:

  1. from flask import Flask,Flask 类的实例就是一个 WSGI 应用,这样才能跑起来。
  2. app = Flask(__name__),参数__name__是模块或包名,这样 Flask 才能去查找 Web 相关文件。
  3. @app.route("/"),定义了接口的 URL,也就是路由配置,默认是 GET 方法。
  4. hello_world()函数是具体的接口处理逻辑代码,返回了一个 HTML 字符串。

小结

本文简单介绍了 Flask 是什么,怎么安装 Flask,演示了 Hello World 的代码实现 Demo,并对代码进行了解析。为什么一定要学 Flask 呢?我最近看了一篇 Django vs Flask 的最新的比较文章,原文是国外某个博客发的,里面说道,如果你想在当前快速实现某个需求,那么可以选择使用 Django。但是请你有时间务必回过头来学一下 Flask,因为这样才能知道用 Python 做 Web 开发的所有细节。

参考资料:

https://flask.palletsprojects.com/en/2.0.x/

https://flask.palletsprojects.com/en/2.0.x/foreword/

https://flask.palletsprojects.com/en/2.0.x/installation/

https://flask.palletsprojects.com/en/2.0.x/quickstart/