这部分内容在《Flask Web开发》里的相关章节讲的很详细,我就不重复了。在这里总结一下重点,再补充一些其他东西。
大型项目结构小项目可以简单的只使用一个程序文件;大型项目需要更高效有序的结构,这是《Flask Web开发》里使用的结构:
|my_app
|-app/
|-templates/ 模板文件
|-static/ 静态文件(css、js等)
|-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 Web开发》后半部分的代码片段省略掉了导入部分的内容,容易让人产生疑惑。因为这里使用包(Package)和模块(Module)来组织程序,所以使用了相对导入。
相对导入使用点来表示层级关系,一个点代表当前的包,两个点表示上一层包,以此类推(不建议超过两层)。引用PEP-328里的例子做说明:
|package/
|__init__.py
|subpackage1/