Flask 项目结构(仅供参考)

project/
    app/                    # 整个程序的包目录
        static/                 # 静态资源文件
            js/                     # JS脚本
            css/                    # 样式表
            img/                    # 图片
            favicon.ico              # 网站图标
        templates/              # 模板文件
            common/                 # 通用模板
            errors/                 # 错误页面
            user/                   # 用户模板
            posts/                  # 帖子模板
            email/                  # 邮件发送
        views/                  # 视图文件
        models/                 # 数据模型
        forms/                  # 表单文件
        config.py               # 配置文件
        email.py                # 邮件发送
        extensions.py           # 各种扩展
    migrations/             # 数据库迁移目录
    tests/                  # 测试单元
    venv/                   # 虚拟环境
    requirements.txt        # 依赖包的列表
    manage.py               # 项目启动控制文件

create_app()函数是程序的工厂函数,用处是把创建程序实例的过程转移到它里面

工厂函数在app包的构造文件(init.py)里定义,在__init__.py里创建的扩展对象(bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy())可以在工厂函数里调用init_app()完成初始化过程。

这样的一个问题是:转换成程序工厂函数的操作让定义路由变复杂了。这个时候可以使用蓝图定义路由,蓝图中定义的路由处于休眠状态,直到蓝图注册到程序上后,路由才真正成为程序的一部分。

原文地址:https://www.cnblogs.com/plusUltra/p/10559769.html