Flask Web Dev elopment —— 大型应用程序结构 虽然小型w eb 应用程序用单个脚本可以很方便,但这种方法却不能很好地扩展。随着应用变得复杂,在单个大的源文件中处理会变得问题重重。 与大多数其他w eb 框架不同,Flask 对大型项目没有特定的组织方式;应用程序的结构完全交给开发人员自己决定。在这一章,提出一个可能的方式来组织管理一个大型应用程序的包和模块。这种结构将用于书中其余的示例中。 1、项目结构 示例7-1 展示基本Flask 应用程序结构 示例7-1:基本多文件Flask 应用结构 |-flasky |-app/ |-templates/ |-static/ |-main/ |-__init__.py |-errors.py |-forms.py |-views.py |-__init__.py |-email.py |-models.py |-migrations/ |-tests/ |-__init__.py |-test*.py |-venv/ |-requirements.txt |-config.py |-manage.py 这个结构有四个顶层目录: Flask 应用一般放置在名为app 的目录下。 migrations 目录包含数据库迁移脚本,这和之前说的一样。 单元测试放置在test 目录下 venv 目录包含Py thon 虚拟环境,这和之前说的也是一样的。 还有一些新的文件: requirements.txt 列出一些依赖包,这样就可以很容易的在不同的计算机上部署一个相同的虚拟环境。 config.py 存储了一些配置设置。 manage.py 用于启动应用程序和其他应用程序任务。 为了帮助你完全理解这个结构,下面会描述将hello.py 应用改为符合这一结构的整个流程。 2 、配置选项 应用程序通常需要几个配置设置。最好的例子就是在开发过程中需要使用不同的数据库,测试,生产环境,这样他们可以做到互不干扰。 我们可以使用配置类的层次结构来代替hello.py 中的简单类字典结构配置。示例 7-2 展示了 config.py 文件。 示例 7-2. co n fig.p y :应用程序配置 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_ADMIN = os.environ.get('FLASKY_ADMIN') @staticmethod def init_app(app): pass class DevelopmentConfig(Config): DEBU...