---
url: /flask/introduction.md
description: Flask是一个用Python编写的轻量的Web应用程序框架，基于Werkzeug WSGI工具包和Jinja2模板引擎。
---

# 轻量的Web开发框架——Flask

本文将继续为大家介绍一个轻量的Web开发框架——Flask。

可能有同学会问，前面不是已经介绍了FastAPI吗？有必要学习这么多框架吗？其中缘由，听我娓娓道来。

## 什么是Flask

![Flask](/img/4319c928-2e5a-43c5-9321-ee404b2dc431.png)

Flask是一个用Python编写的轻量的Web应用程序框架，基于Werkzeug WSGI工具包和Jinja2模板引擎。Flask 也被称为 “microframework”，因为它使用简单的核心，用 extension 增加其他功能。

Flask 没有默认使用的数据库、窗体验证工具。然而，Flask 保留了扩增的弹性，可以用 Flask-extension 加入这些功能：ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

简单说，Flask本身是微型的，但是具备极强的扩展能力以便完成复杂的任务。

相较于FastAPI为编写高性能的API而生，Flask则是在保持轻量的同时增加了对前端页面的渲染等能力。

## Flask具备哪些特性

* 内置开发用服务器和 debugger

* 集成单元测试（unit testing）

* RESTful request dispatching

* 使用 Jinja2 模板引擎

* 支持 secure cookies（client side sessions）

* 100% WSGI 1.0 兼容

* Unicode based

* 详细的文件、教学

* Google App Engine 兼容

* 可用 Extensions 增加其他功能

## 哪些场景可以用Flask

* Web开发

如果您需要用Python开发一个网站，那么Flask可以作为首选框架之一。如果只是一个简单的项目，那么Flask会很合适。如果是一个大型的项目，则需要随着开发经验的增加，熟悉的扩展越来越多，也就会越来越得心应手。

* AI领域

你可能想不到，Flask在AI领域也是功不可没。我们的关注点大多数都在模型上面，但是通常开源模型的同时也会提供一个Demo，供大家快速上手体验。这时Demo的实现就需要用到轻量的Flask同时实现前后端。

* 函数计算

函数计算可以理解成一个个小的web服务，用于处理我们的业务逻辑，而函数计算的实现也是很大程度上借鉴了Flask，所以使用函数计算会觉得无比亲切。

> 函数计算是一个事件驱动的全托管 Serverless 计算服务，用户无需管理服务器等基础设施，只需编写代码并上传，函数计算会准备好计算资源，并以弹性、可靠的方式运行业务代码。

## 快速开始：一个最小的应用

1. 安装Flask

```sh
pip install Flask
```

2. 创建`app.py`文件，编写一个最小的应用

```py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<H1 style='color: red;'>Hello, World!</H1>"
```

3. 启动服务

在与`app.py`同目录下执行命令：

```sh
flask run
```

看到如下提示就说明服务启动成功了。

![启动](/img/076cc9ae-a47d-4519-8caa-e318e6be17e0.png)

4. 访问

按照提示，在浏览器中打开`http://127.0.0.1:5000`，则可以看到如下效果

![hello world](/img/b2739544-c500-4abc-bc33-f8773fd6cf8f.png)

到此，一个简单的web我们就体验完成了。但是有几点需要特别强调一下。

* 文件名不需要一定是`app.py`，如果是其它，比如：`hello.py`，则在启动服务的时候，启动命令需要修改为：`flask --app hello run`，用`--app`指定应用名。

* 当你修改了代码后，重新刷新浏览器，你会发现页面没有变化。这是因为需要我们开启DEBUG模式，这样每当代码发生改变后服务都会自动重启，我们刷新浏览器也就可以看到变化了。开启DEBUG模式也很简单，把启动命令修改为：`flask run --debug`

## 进阶

如果你对Flask已经产生了浓厚的兴趣，那么建议您可以阅读详细、完整的官方文档。

官方文档目前只有英文版，想要阅读中文版的同学，可以关注：遇码，回复：**Flask**，获取Flask中文文档。
