# learn-flask **Repository Path**: jsen/learn-flask ## Basic Information - **Project Name**: learn-flask - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-08 - **Last Updated**: 2025-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Learn Flask 这是一个用于学习Flask框架的项目,实现了电影列表管理功能,包括用户认证、增删改查等操作。 ## 项目架构 本项目采用主流Flask项目结构,具有良好的模块化设计和可扩展性: ``` learn-flask/ ├── app.py # 应用入口文件 ├── pyproject.toml # Poetry依赖管理配置 ├── poetry.lock # Poetry锁定文件 ├── README.md # 项目说明文件 ├── .gitignore # Git忽略文件 ├── learn_flask/ # 应用核心代码目录 │ ├── __init__.py # 应用工厂函数 │ ├── settings.py # 配置文件 │ ├── extensions.py # 扩展初始化 │ ├── models.py # 数据模型 │ ├── commands.py # 自定义命令 │ └── blueprints/ # 蓝图目录 │ ├── main.py # 主要业务逻辑蓝图 │ └── auth.py # 用户认证蓝图 ├── static/ # 静态文件目录 │ ├── style.css # 样式表 │ ├── favicon.ico # 网站图标 │ └── images/ # 图片资源 └── templates/ # 模板文件目录 ├── base.html # 基础模板 ├── index.html # 主页模板 ├── login.html # 登录页模板 ├── edit.html # 编辑页模板 └── 404.html # 404错误页模板 ``` ## Flask 架构原理 ### 应用工厂模式 本项目采用应用工厂模式创建Flask应用,这种模式的优势包括: 1. **支持创建多个应用实例**:便于测试和部署不同配置的应用 2. **避免循环导入问题**:扩展可以在应用实例创建后再初始化 3. **更好的可配置性**:可以根据不同环境加载不同配置 ### 蓝图(Blueprint) 使用蓝图组织路由,将相关的视图函数分组管理: - `main`蓝图:处理主页、电影增删改查等主要业务逻辑 - `auth`蓝图:处理用户登录、登出等认证相关功能 ### 扩展机制 Flask扩展在`extensions.py`中统一初始化,然后在应用工厂中与应用实例关联, 这种模式解耦了扩展的初始化和使用,提高了代码的模块化程度。 ### ORM模型 使用SQLAlchemy作为ORM工具,提供了面向对象的数据操作接口, 避免了直接编写SQL语句,同时支持多种数据库后端。 ## 环境要求 - Python 3.13+ - Poetry 1.0+ ## 安装依赖 使用Poetry安装项目依赖: ```bash poetry install ``` ## 初始化数据库 首次运行需要初始化数据库: ```bash # 初始化数据库 flask init-db # 或者生成测试数据 flask forge ``` ## 运行应用 在虚拟环境中运行应用: ```bash poetry run python app.py ``` 或者激活虚拟环境后运行: ```bash poetry shell python app.py ``` 应用将在 `http://127.0.0.1:5000` 上运行。 ## 功能说明 1. **用户认证**: - 登录/登出功能 - 登录状态保持 - 权限控制(仅登录用户可添加/编辑/删除电影) 2. **电影管理**: - 查看电影列表 - 添加新电影 - 编辑已有电影 - 删除电影 3. **数据持久化**: - 使用SQLite数据库存储用户和电影数据 - 数据库迁移支持 ## 添加依赖 使用Poetry添加新的依赖: ```bash poetry add package-name ``` 添加开发依赖: ```bash poetry add --group dev package-name ``` ## 许可证 本项目仅供学习使用。