邳州信息网

标题: 封面 Flask Web 的项目结构 [打印本页]

作者: lanlanlan    时间: 2018-10-13 10:21
标题: 封面 Flask Web 的项目结构


一个脚本中写一个Web程序是不成取的,当项目变大时,会产生很多问题。虽然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





这种结构有4个顶级文件夹,Flask程序保留在名为app的包中,migrations文件夹数据库迁移脚本,单元测试写在tests包中,venv是python运行的虚拟环境。别的requirements.txt列出的是本虚拟环境所需要的包,便利在其他地方安排同样的环境,config.py是配置文件信息,manage.py是负责启动程序以及其他程序任务。

配置文件中,建议使用层次结构的配置类,而不是简单的字典状结构,并且,配置信息建议区分开发,测试和生产环境,各自使用不同的数据库,这样彼此不会干扰。这时通常会用到类继承,基类config包含通用配置,继承类别离定义专用配置。配置类可以定义init_app()类方法,参数是程序实列。敏感信息保留在环境变量,这样的配置灵活且安全。

这里补充说一下程序包,所谓程序包就是保留程序所有代码,模板,静态文件的文件夹,我们通常会称这个包为app(应用)。





单个文件开发程序虽然便利,但是缺点很明显,因为程序在全局作用域中创建,所以无法动态修改配置,运行脚本时,程序实例已经创建,再想修改配置就不成能了。这一点对于单元测试尤为重要。这个问题的解决方法就是延迟创建程序实例,把创建过程移到可显式调用的工厂函数中。这样不仅可以给脚本留出配置程序的时间,还能够创建多个程序实例。这么有用的工厂函数在app包的构造文件中定义。

关于工厂函数的定义以及使用蓝本等内容,明天再继续。敬请期待。
作者: yeying520    时间: 2018-10-13 10:22
微头条上传了文件结构的思维导图,早知道直接贴图片好了,现在真难看
作者: 谣瑶    时间: 2018-10-13 10:22
真是垃圾的编纂功能啊,空格竟然会自动去除,




欢迎光临 邳州信息网 (https://www.pzxxw.com/) Powered by Discuz! X3.4