| 会员登录 立即注册

打印 上一主题 下一主题

封面 Flask Web 的项目结构

[复制链接]
跳转到指定楼层
楼主
lanlanlan 发表于 2018-10-13 10:21:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
楼主
lanlanlan
2018-10-13 10:21:15 4038 2 看楼主


一个脚本中写一个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:06 | 只看该作者
沙发
yeying520
2018-10-13 10:22:06 看楼主
微头条上传了文件结构的思维导图,早知道直接贴图片好了,现在真难看
回复 支持 反对

使用道具 举报

板凳
谣瑶 发表于 2018-10-13 10:22:29 | 只看该作者
板凳
谣瑶
2018-10-13 10:22:29 看楼主
真是垃圾的编纂功能啊,空格竟然会自动去除,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

lanlanlan 当前离线
高级会员

查看:4038 | 回复:2

关于我们  |   侵权投诉受理  |   联系我们  |   Archiver  |  
免责声明:邳州信息网所有言论只代表发表者个人观点,与本站无关
Copyright © 2009-2025 pzxxw.com 版权所有:邳州金银杏文化传媒有限公司  

苏公网安备 32038202000401号

快速回复 返回顶部 返回列表