Skip to content

安装

依赖

当安装 Flask 时,以下配套软件会被自动安装。

Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。

Jinja 用于渲染页面的模板语言。

MarkupSafe 与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击。

ItsDangerous 保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie.

Click 是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义 管理命令。

可选依赖

以下配套软件不会被自动安装。如果安装了,那么 Flask 会检测到这些软件。

Blinker 为 信号 提供支持。

SimpleJSON 是一个快速的 JSON 实现,兼容 Python’s json 模块。如果安装 了这个软件,那么会优先使用这个软件来进行 JSON 操作。

python-dotenv 当运行 flask 命令时为 通过 dotenv 设置环境变量 提供支持。

Watchdog 为开发服务器提供快速高效的重载。

虚拟环境

建议在开发环境和生产环境下都使用虚拟环境来管理项目的依赖。

为什么要使用虚拟环境? 随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库。同一个 Python 库的不同版本可能不兼容。

虚拟环境可以为每一个项目安装独立的 Python 库,这样就可以隔离不同项目之间的 Python 库,也可以隔离项目与操作系统之间的 Python 库。

Python 3 内置了用于创建虚拟环境的 venv 模块。

创建一个虚拟环境(windows下)

创建一个项目文件夹,然后创建一个虚拟环境。创建完成后项目文件夹中会有一个 venv 文件夹:

shell
py -3 -m venv venv

激活虚拟环境

shell
venv\Scripts\activate

激活后,你的终端提示符会显示虚拟环境的名称。

安装 Flask

在已激活的虚拟环境中可以使用如下命令安装 Flask:

shell
pip install Flask

快速上手

一个最小的应用

python
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

那么,这些代码是什么意思呢?

首先我们导入了 Flask 类。 该类的实例将会成为我们的 WSGI 应用。

接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。如果你使用 一个单一模块(就像本例),那么应当使用 __name__ ,因为名称会根据这个 模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 __main__ , 也可能是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里可以 找到模板和静态文件等东西。更多内容详见Flask 文档

然后我们使用 route() 装饰器来告诉 Flask 触发函数的 URL 。

函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。

把它保存为 hello.py 或其他类似名称。请不要使用 flask.py 作为应用名称,这会与 Flask 本身发生冲突。

可以使用 flask 命令或者 python 的 -m 开关来运行这个应用。在 运行应用之前,需要在终端里导出 FLASK_APP 环境变量:

如果是在 Windows 下,那么导出环境变量的语法取决于使用的是哪种命令行解释器。

在 Command Prompt 下:

shell
C:\path\to\app>set FLASK_APP=hello.py

在 PowerShell 下:

shell
PS C:\path\to\app> $env:FLASK_APP = "hello.py"

然后使用

shell
flask run

这样就启动了一个非常简单的内建的服务器。这个服务器用于测试应该是足够了,但是 用于生产可能是不够的。关于部署的有关内容参见《 部署方式 》。

现在在浏览器中打开 http://127.0.0.1:5000/ ,应该可以看到 Hello World! 字样。

调试模式

虽然 flask 命令可以方便地启动一个本地开发服务器,但是每次应用代码 修改之后都需要手动重启服务器。这样不是很方便, Flask 可以做得更好。如果你打开 调试模式,那么服务器会在修改应用代码之后自动重启,并且当应用出错时还会提供一个 有用的调试器。

如果需要打开所有开发功能(包括调试模式),那么要在运行服务器之前导出 FLASK_ENV 环境变量并把其设置为 development:

shell
set FLASK_ENV=development
flask run

这样可以实现以下功能:

  1. 激活调试器。

  2. 激活自动重载。

  3. 打开 Flask 应用的调试模式。

还可以通过导出 FLASK_DEBUG=1 来单独控制调试模式的开关。