应用工厂
一个Flask应用就是一个Flask类的实例,应用的所有东西都会和这个示例一起注册。最直接的方法就是在代码的最开始创建一个全局的Flask示例。但是,当项目越来越大,这样做就不不好了。
解决这个问题的方式是:写一个函数用于创建Flask实例来代替创建全局示例,最后返回这个实例。这样的函数就叫做应用工厂。
示例(flaskr/__init__.py):
创建一个名为flaskr的目录,然后在flaskr目录下创建__init__.py文件(表示这是一个应用/包),然后__init__.py内容如下:
# -*- coding:utf-8 -*-
"""
应用设置
"""
import os
from flask import Flask
def create_app(test_config=None):
# 创建实例,并同时启用实例文件夹(instance_relative_config:告诉应用——配置文件是相对于instance folder的相对路径)
app = Flask(__name__, instance_relative_config=True)
# 使用键值对的方式配置密钥和数据库
app.config.from_mapping(
SECRET_KEY='dev', # 这里为了方便,使用了简单的密钥
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite')
)
# 指定正式环境和测试环境的配置文件
if test_config is None:
app.con