安装
依赖
当安装 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 文件夹:
py -3 -m venv venv激活虚拟环境
venv\Scripts\activate激活后,你的终端提示符会显示虚拟环境的名称。
安装 Flask
在已激活的虚拟环境中可以使用如下命令安装 Flask:
pip install Flask快速上手
一个最小的应用
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 下:
C:\path\to\app>set FLASK_APP=hello.py在 PowerShell 下:
PS C:\path\to\app> $env:FLASK_APP = "hello.py"然后使用
flask run这样就启动了一个非常简单的内建的服务器。这个服务器用于测试应该是足够了,但是 用于生产可能是不够的。关于部署的有关内容参见《 部署方式 》。
现在在浏览器中打开 http://127.0.0.1:5000/ ,应该可以看到 Hello World! 字样。
调试模式
虽然 flask 命令可以方便地启动一个本地开发服务器,但是每次应用代码 修改之后都需要手动重启服务器。这样不是很方便, Flask 可以做得更好。如果你打开 调试模式,那么服务器会在修改应用代码之后自动重启,并且当应用出错时还会提供一个 有用的调试器。
如果需要打开所有开发功能(包括调试模式),那么要在运行服务器之前导出 FLASK_ENV 环境变量并把其设置为 development:
set FLASK_ENV=development
flask run这样可以实现以下功能:
激活调试器。
激活自动重载。
打开 Flask 应用的调试模式。
还可以通过导出 FLASK_DEBUG=1 来单独控制调试模式的开关。