# cat **Repository Path**: liuke9010/cat ## Basic Information - **Project Name**: cat - **Description**: cat的成长日记 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-05-09 - **Last Updated**: 2026-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: use ## README # Cat - Django 全栈项目 一个基于 Django 5.x 的全栈个人生活管理应用,覆盖学习、运动、生活、娱乐四大场景,支持多用户数据隔离、用户认证、Markdown 编辑、数据可视化图表、间隔复习等特性。 --- ## 项目结构 ``` cat/ ├── cat/ # Django 项目配置目录 │ ├── __init__.py │ ├── settings.py # 项目配置文件 │ ├── urls.py # 主路由配置 │ ├── asgi.py │ └── wsgi.py ├── frontend/ # 主应用目录 │ ├── __init__.py │ ├── models.py # 数据模型(13 个模型) │ ├── views.py # 视图函数 │ ├── admin.py # Django Admin 注册 │ ├── apps.py │ ├── tests.py │ └── migrations/ # 数据库迁移文件 ├── templates/ # 模板文件 │ ├── welcome.html # 欢迎页 │ ├── home.html # 首页(模块导航) │ ├── login.html # 登录页 │ ├── register.html # 注册页 │ ├── profile.html # 个人信息编辑页 │ ├── module.html # 通用模块页 │ ├── body_data/ # 身体数据模块 │ ├── learning_notes/ # 学习笔记模块(Markdown 编辑器) │ ├── learning_plan/ # 学习计划模块 │ ├── progress_record/ # 进度追踪模块 │ ├── knowledge_cards/ # 知识卡片模块(含复习、分类管理) │ ├── reading_list/ # 阅读清单模块 │ ├── todo/ # 日常待办模块 │ ├── account/ # 记账本模块(含统计分析) │ ├── diary/ # 日记本模块 │ ├── exercise/ # 运动记录模块 │ ├── book_notes/ # 读书笔记模块 │ └── travel/ # 旅行足迹模块 ├── static/ # 静态文件 │ └── favicon.svg # 网站图标 ├── manage.py # Django 管理脚本 ├── db.sqlite3 # SQLite 数据库文件(开发用) └── README.md # 项目说明文档 ``` --- ## 技术栈 - **后端框架**:Django 5.x - **数据库**:PostgreSQL(生产)/ SQLite3(开发) - **前端**:原生 HTML + CSS + JavaScript - **图表库**:Chart.js 4.x - **Markdown 编辑**:marked.js + highlight.js - **运行端口**:默认 8000 --- ## 快速开始 ### 1. 环境准备 ```bash # 创建虚拟环境(推荐) python -m venv venv source venv/bin/activate ``` ### 2. 安装依赖 ```bash pip install django psycopg2-binary ``` ### 3. 配置数据库 默认使用 PostgreSQL,需先创建数据库: ```sql CREATE DATABASE cat; ``` 也可修改 `cat/settings.py` 使用 SQLite3 进行本地开发。 ### 4. 数据库迁移 ```bash python manage.py makemigrations python manage.py migrate ``` ### 5. 创建管理员 ```bash python manage.py createsuperuser ``` ### 6. 启动开发服务器 ```bash python manage.py runserver ``` ### 7. 访问应用 打开浏览器访问 `http://127.0.0.1:8000/` --- ## 功能模块 ### 用户认证系统 - **注册**:用户名(>= 3 字符)+ 密码(>= 6 字符) - **登录**:用户名 + 密码,支持错误提示 - **鉴权**:所有业务页面必须登录才能访问(`@login_required`) - **个人信息**:支持修改用户名、中文名、性别、出生日期、地址、工作、修改密码 - **多用户数据隔离**:所有业务数据通过 `user` 外键关联,用户间数据完全隔离 ### 📚 学习模块 #### 学习笔记 (`/learn/notes/`) - **Markdown 编辑器**:分屏编辑,左侧输入源码,右侧实时预览 - **工具栏**:加粗、斜体、标题、链接、代码块、列表等快捷按钮 - **代码高亮**:highlight.js 自动识别语言并高亮 - **笔记管理**:新建、列表、详情、编辑、删除 #### 学习计划 (`/learn/plan/`) - **计划管理**:新建、列表、详情、编辑、删除 - **状态管理**:未开始、进行中、已完成、已暂停 - **进度可视化**:计划详情页显示整体进度条 - **状态筛选**:按状态筛选计划列表 #### 进度追踪 (`/learn/progress/`) - **进度记录**:关联学习计划,记录进度百分比(0-100%) - **滑块调进度**:添加/编辑进度时用滑块选择百分比 - **进度条展示**:列表页和详情页可视化进度 #### 知识卡片 (`/learn/cards/`) - **卡片管理**:双面卡片(问题/答案),支持新建、列表、详情、编辑、删除 - **间隔复习**:复习模式支持随机和顺序浏览,根据掌握程度(0-5)自动计算下次复习时间 - **分类管理**:独立的知识分类管理,编辑分类时自动更新关联卡片 - **掌握程度**:0 级-1 天后复习, 1 级-2 天, 2 级-4 天, 3 级-7 天, 4 级-14 天, 5 级-30 天 #### 阅读清单 (`/learn/books/`) - **书籍管理**:书名、作者、分类、阅读状态、评分(0-5 星)、笔记 - **状态追踪**:未读、在读、已读 - **统计分析**:总数、在读数、已读数统计 ### 🏃 运动模块 #### 运动记录 (`/sport/exercise/`) - **运动类型**:跑步、游泳、骑行、健身、瑜伽、步行、篮球、足球、羽毛球等 - **数据记录**:时长、消耗卡路里、距离、备注、日期 - **统计分析**:总时长、总卡路里、总记录数 #### 身体数据 (`/sport/body-data/`) - **即时记录**:记录人、身高(cm)、体重(kg) - **成长趋势**:Chart.js 双 Y 轴折线图展示身高/体重趋势 - **记录明细**:分页展示所有记录,支持删除 ### 🏠 生活模块 #### 日常待办 (`/life/todo/`) - **任务管理**:新建、列表、详情、编辑、删除 - **快速勾选**:列表页点击圆圈一键切换完成状态(AJAX 无刷新) - **优先级**:高(🔴)、中(🟡)、低(🟢)三级优先级 - **截止日期**:支持设置截止日期,过期未完成红色提醒 - **多维筛选**:按状态(全部/未完成/已完成)+ 优先级筛选 #### 记账本 (`/life/account/`) - **收支记录**:收入/支出切换,10 种预设分类(餐饮、交通、购物、娱乐、住房、医疗、教育、工资、奖金、其他) - **批量录入**:同一天可一次添加多条记录 - **收支统计**:列表页显示总收入、总支出、结余 - **统计分析**: - 时间维度:今日、本周、本月、今年 - 饼图:收入/支出分类占比(Chart.js 环形图) - 曲线图:收支趋势变化(Chart.js 双折线图) #### 日记本 (`/life/diary/`) - **日记管理**:标题、内容、心情、天气、日期 - **心情选择**:😊 开心 / 😐 一般 / 😢 难过 / 😠 生气 / 🤩 兴奋 / 😫 疲惫 - **天气记录**:☀️ 晴 / ☁️ 多云 / 🌧️ 雨 / ❄️ 雪 / 🌬️ 风 - **月份筛选**:按月份过滤日记列表 ### 🎮 娱乐模块 #### 读书笔记 (`/fun/notes/`) - **独立笔记**:不同于阅读清单,专注于读书心得和笔记 - **笔记管理**:书名、作者、内容、评分、分类 - **分类筛选**:按分类过滤笔记列表 #### 旅行足迹 (`/fun/travel/`) - **旅行记录**:目的地、起止日期、旅行日记、评分 - **记录管理**:新建、列表、详情、编辑、删除 --- ## 数据模型 | 模型 | 说明 | 主要字段 | |------|------|---------| | `UserProfile` | 用户资料 | 用户名、中文名、性别、出生日期、地址、工作 | | `BodyData` | 身体数据 | 用户、记录人、身高、体重、记录时间 | | `LearningNote` | 学习笔记 | 用户、标题、内容(Markdown)、分类 | | `LearningPlan` | 学习计划 | 用户、标题、描述、学科、起止日期、状态 | | `ProgressRecord` | 进度记录 | 所属计划、进度标题、内容、进度百分比 | | `KnowledgeCard` | 知识卡片 | 用户、正面(问题)、背面(答案)、分类、掌握程度、下次复习 | | `KnowledgeCategory` | 知识分类 | 用户、分类名称 | | `ReadingBook` | 阅读书籍 | 用户、书名、作者、分类、状态、评分、笔记 | | `Todo` | 待办事项 | 用户、标题、描述、优先级、截止日期、是否完成 | | `AccountRecord` | 账目记录 | 用户、类型(收入/支出)、金额、分类、描述、日期 | | `Diary` | 日记 | 用户、标题、内容、心情、天气、日期 | | `BookNote` | 读书笔记 | 用户、书名、作者、内容、评分、分类 | | `ExerciseRecord` | 运动记录 | 用户、运动类型、时长、卡路里、距离、日期 | | `TravelRecord` | 旅行记录 | 用户、目的地、起止日期、旅行日记、评分 | --- ## 路由总览 | 模块 | 路由前缀 | 功能 | |------|---------|------| | 用户认证 | `/login/` `/register/` `/logout/` `/profile/` | 注册、登录、退出、个人信息 | | 首页 | `/` `/home/` `/module//` | 欢迎页、首页、模块导航 | | 身体数据 | `/sport/body-data/` | 记录、趋势、明细、删除 | | 运动记录 | `/sport/exercise/` | 新建、列表、详情、编辑、删除 | | 学习笔记 | `/learn/notes/` | 新建、列表、详情、编辑、删除 | | 学习计划 | `/learn/plan/` | 新建、列表、详情、编辑、删除 | | 进度追踪 | `/learn/progress/` | 新建、列表、详情、编辑、删除 | | 知识卡片 | `/learn/cards/` | 新建、列表、详情、编辑、删除、复习、分类管理 | | 阅读清单 | `/learn/books/` | 新建、列表、详情、编辑、删除 | | 待办事项 | `/life/todo/` | 新建、列表、详情、编辑、删除、快速切换 | | 记账本 | `/life/account/` | 新建、列表、详情、编辑、删除、统计分析 | | 日记本 | `/life/diary/` | 新建、列表、详情、编辑、删除 | | 读书笔记 | `/fun/notes/` | 新建、列表、详情、编辑、删除 | | 旅行足迹 | `/fun/travel/` | 新建、列表、详情、编辑、删除 | | Django Admin | `/admin/` | 后台管理 | --- ## 开发说明 ### 添加新模块 1. 在 `frontend/models.py` 中定义模型 2. 在 `frontend/views.py` 中编写视图函数 3. 在 `cat/urls.py` 中添加路由 4. 在 `templates/` 中创建对应模板文件 5. 在 `MODULES` 字典中注册模块信息 ### 数据备份与恢复 ```bash # 备份 python manage.py dumpdata frontend > data_backup.json # 恢复 python manage.py loaddata data_backup.json ``` --- ## 设计特点 1. **多用户数据隔离**:所有数据模型通过 `user` 外键关联,用户间数据完全隔离 2. **用户认证**:完整的注册/登录/鉴权系统,支持修改密码和个人信息 3. **响应式布局**:适配桌面端和移动端 4. **Markdown 编辑**:学习笔记支持 Markdown 语法,分屏实时预览 5. **间隔复习系统**:知识卡片根据掌握程度自动安排复习时间 6. **数据可视化**: - 身体数据双 Y 轴折线图 - 记账本分类饼图和收支趋势曲线图 7. **用户体验**: - 表单验证实时提示 - 删除前二次确认 - 待办快速勾选(AJAX 无刷新) - 记账批量录入 8. **统一设计风格**: - 紫色渐变主题色 - 侧边栏 + 面包屑导航 - 右上角用户菜单 --- ## 未来规划 - [ ] 数据导出功能(CSV/Excel) - [ ] 提醒功能(每日打卡通知) - [ ] 身体质量指数(BMI)自动计算 - [ ] 更多身体数据项(血压、心率、步数等) - [ ] 移动端适配优化 - [ ] 主题切换(亮色/暗色) - [ ] 运动模块功能完善(健身计划、跑步地图、运动日历、成就徽章) - [ ] 生活模块功能完善(习惯打卡、菜谱收藏、天气心情) - [ ] 娱乐模块功能完善(影视收藏、音乐歌单、游戏记录、灵感收集) - [ ] 在线课程功能 - [ ] 单元测试覆盖 --- ## 许可证 本项目采用 MIT 许可证,详情请查看 LICENSE 文件。