我们将介绍一种使用包和模块组织大型程序的方式。
7.1 项目结构
Flask 程序的基本结构如示例 7-1 所示。
这种结构有4个顶级文件夹:
1)Flask程序一般都保存在名为app的包中。
2) migrations文件夹包含数据库迁移脚本
3)单元测试编写在tests包中
4)venv文件夹包含Python虚拟环境
同时还创建了一些新文件:
- requirements.tet列出了所有依赖包,便于在其他电脑中重新生成相同的虚拟环境。
- config.py 存储配置
- manage.py 用于启动程序以及其他的程序任务
7.2 配置选项
程序经常需要设定多个配置。
使用层次结构的配置类。
#config.py:程序的配置
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
@staticmethod
def init_app(app):
pass
class DevelopmentConfig(Config):
DEBUG = True
MAIL_SERVER = 'smtp.googlemail.com'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('DEV_DATABASE_URL') or 'sqlite:///'
+os.path.join(basedir, 'data-dev.sqlite')
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE