一个良好的项目结构努力可以清晰的看出来各个模块的作用,方便扩展,易于修改。虽然flask并没有强制要求开发者项目的目录层次结构应该是怎么样的,但是如果我们以包和模块的形式组织项目的话,后期的开发会非常的有条理。
| - projectName
List item
| - app //程序包
| - templates //jinjia2模板
|- static //css,js 图片等静态文件
| - main //py程序包 ,可以有多个这种包,每个对应不同的功能
| - __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 //启动程序
1,全局congif配置文件
系统经常要用到很多全局配置变量一节多套欢迎(开发,测试,生产)配置变量,因此单独的使用配置文件来进行配置可以做到方便管了。本文实例项目距主要包含加密使用的SECRET_KEY,发送邮件的相关配置,数据库配置等。
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