应用配置与启动
一个Flask应用就是Flask类的实例,应用中的所有配置、URL映射等等内容都必须在这个实例中注册。建立Flask类实例最简单直接的办法就是建立一个全局实例,就像是前面的最小Flask应用一般。但是这种创建方式并不推荐使用。
推荐的应用建立的方式是在一个函数中创建Flask的实例,这个函数被称为应用工厂(application factory)。所有的配置、注册工作都在这个函数中完成,函数最后返回Flask实例完成工作。
以下示例给出了一个示范性的应用工厂。
import os
from flask import Flask
def create_app(test_config=None):
# 建立Flask实例
app = Flask(__name__, instance_relative_config=True)
# 设定应用将要使用的默认配置
app.config.from_mapping(
# SECRET_KEY用于对Flask及其扩展对数据进行加密保护
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
if test_config is None:
# 从config.py中读取配置覆盖默认设置
app.config.from_pyfile('config.py', silent=True)
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# 此处用于保证前面声明的数据库所在路径存在
try:
os.makedirs(app.instance_path)
except OSError:
pass
# 最简单的路由声明
@app.route('/hello')
def hello():
return 'Hello, World!'
return app
Flask提供了flask
命令来运行应用,但是请注意,这个命令应该只用于调试。flask
命令依赖于两个环境变量来运行,一是FLASK_APP
,用于指定项目主程序所在包,二是FLASK_ENV
指定运行环境。在指定两个环境变量之后,执行flask run
来启动应用。
对于Linux系统,可以执行以下指令:
export FLASK_APP=project-package
export FLASK_ENV=development
flask run
对于Windows系统,在命令行cmd.exe中,可以使用set
替代export
。
set FLASK_APP=project-package
set FLASK_ENV=development
flask run
在PowerShell中,则需要使用$env:
来代替export
。
$env:FLASK_APP=project-package
$env:FLASK_ENV=development
flask run
flask run
默认监听127.0.0.1
的地址,可以使用--host
参数来改变监听。Flask的监听服务默认运行在5000端口上。指定FLASK_ENV
为development可以启动调试模式,此时Flask会使用友好方式列出程序错误所在。