🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
##Flask 学习小组 ###**Flask项目结构** ![](https://box.kancloud.cn/f8106438dc36255a5208fca6aed8d748_612x620.png) > 看完网上的这张图大家可能并不明白各个Python文件的联系,接下来就为大家逐一介绍。 * **_____init_____.py** > 控制着包的导入行为,__init__.py 文件会在导入时被执行。 import 方便了我们导入其他 Python 文件中的函数,但一个一个的导入 Python 文件是很复杂的,我们就引入了包的概念,可以批量的导入包中的多个Python文件。那么如何定义包呢,这就是 __init__.py 的用途。同时,当我们导入包时也会执行 __init__.py 的内容。 在 import 导入的过程中,import * 导入了包中的所有元素。其原因就在与 __init__.py 中,定义了 __all__=「‘module1’,‘module2’」,* 导入包时,是受 __init__.py 的限制,只会导入 __all__ 中定义的包。 * **工厂函数** > 构造程序,但不进行实例化的函数 * **蓝本** > 处于休眠状态的程序 * **migrations** > Flask中的扩展 Flask-Migrate 可以实现数据库的迁移 数据库为什么要迁移? 当数据模型发生变动时,数据库表需要更新,Flask-SQLAlchemy 比较死性,只有数据库表不存在时才会根据模型创建。 所以我们要像重新根据模型创建表,只能删除旧表重新创建,但问题是这样会导致原有表中数据丢失。 所以要使用Flask-Migrate进行表的更新。 * **requirements.txt** 包含所有flask依赖包,方便重新创建与开发者相同的虚拟环境 requirements的生成: (venv)$ pip freeze >requirements.txt 依照requirements 安装所有依赖包: 在新创建的虚拟环境中: (venv) $ pip install -r requirements.txt * **_____name_____ 和 _____main_____** _____name_____: > Modules… Predefined (writable) attributes: __name__ is the module’s name; Classes… Special attributes: __name__ is the class name; 如果是放在Modules模块中,就表示是模块的名字; 如果是放在Classs类中,就表示类的名字; _____main_____: Python 自己运行自己的代码时:__name__=__main__ 我们通过import导入模块时:__name__=使用该模块的xxx.py文件 实验: **a.py:** ![](https://box.kancloud.cn/51cc53dc3540876966b72aa46259069b_316x100.png) **b.py:** ![](https://box.kancloud.cn/31fc8abccf4d14edbf0834859e77bd70_370x107.png) **结果:** ![](https://box.kancloud.cn/3b72d5e9f7d94d14857bdb65df710697_293x129.png) ##**最后放大招(全网最全梳理图)** ![](https://box.kancloud.cn/ac54a7e760f8d8a794d5276679f0275a_1280x720.jpg) * * * * * 本人微信:sunyutong0725 欢迎交流