# 1-个人博客系统 - 功能说明
# 项目概述
个人博客系统是一个功能完善的内容管理平台,集文章发布、分类管理、标签系统、评论互动于一体的综合性Web应用系统。采用前后端分离架构,基于Django和Vue 3技术栈,为博主提供专业的内容创作与管理解决方案。
# 项目概览
# ✨ 创新点
# 1. 模块化独立App架构
- 独立应用设计:每个功能模块独立为Django App,职责清晰。
- 松耦合架构:模块间通过逻辑外键关联,避免物理外键约束。
- 易于扩展:新增功能只需创建新App,不影响现有模块。
# 2. 自定义JWT认证体系
- 无状态认证:基于Token的认证机制,不依赖Session。
- 灵活配置:Token有效期可通过环境变量配置(默认7天)。
- 装饰器权限控制:@login_required_api、@admin_required_api简化权限验证。
# 3. 智能代码生成器
- 一键生成CRUD:自动生成models、serializers、views、urls完整代码。
- 多字段类型支持:支持string、int、decimal、date、json等多种字段类型。
- 自动化部署:自动注册到settings.py和主urls.py,自动执行数据库迁移。
# 4. 富文本内容编辑
- 双编辑器支持:集成WangEditor和V-md-editor,支持富文本和Markdown。
- 图片上传:支持图片插入、拖拽上传、实时预览。
- 代码高亮:集成highlight.js,支持多语言代码高亮显示。
# 5. 完善的工具函数库
- 50+工具函数:密码加密、数据验证、格式化、随机生成等。
- 日志系统:按类型分文件记录,自动轮转,支持API请求日志。
- 环境变量管理:使用python-dotenv,支持多环境配置切换。
# ✨ 项目亮点
# 一、 业务功能亮点
- 完整的内容管理系统:文章、分类、标签、评论全流程管理。
- 灵活的文章状态控制:草稿、已发布、已下架三种状态,支持置顶。
- 多维度文章组织:分类+标签双重组织方式,便于内容归档。
- 评论互动系统:支持父子评论,记录IP地址,状态管理。
# 二、 技术实现亮点
- 现代化前端技术栈:采用 Vue 3.4.29 + Vite 5.3.1 + Element Plus 2.8.4 + Pinia 2.2.2,高效开发。
- 稳定可靠的后端架构:基于 Django 3.2.23 + DRF 3.14.0,配合自定义JWT认证。
- 完善的数据库设计:6张核心表,逻辑外键设计,自动时间戳,文章数量自动统计。
- 丰富的第三方集成:WangEditor(富文本)、V-md-editor(Markdown)、ECharts(图表)、Axios(HTTP)。
- 安全性设计:密码哈希存储、Token认证、装饰器权限拦截、防止删除自己的管理员账号。
# 三、 用户体验亮点
- 双界面设计:前台展示界面简洁直观,后台管理界面功能完善。
- 响应式布局:基于Element Plus栅格系统,适配多种屏幕尺寸。
- 交互优化:
- 友好的加载提示和错误提示。
- 重要操作的确认弹窗。
- 及时的全局消息提示。
- 严谨的前后端表单验证。
- 文件上传体验:支持图片预览、拖拽上传、大文件上传(最大100MB)。
# 管理员
# 系统管理
管理员管理:管理全部管理员账号,支持新增、编辑、删除、启用/禁用操作
普通用户管理:管理全部用户账号,可修改用户信息、状态,支持重置密码
# 内容管理
文章管理:管理全部文章,支持新增、编辑、删除、发布/下架、置顶操作,可查看文章详情、浏览量统计
分类管理:管理文章分类,支持新增、编辑、删除、排序,自动统计分类下的文章数量
标签管理:管理文章标签,支持新增、编辑、删除,可设置标签颜色,自动统计标签下的文章数量
评论管理:管理全部评论,可查看评论详情、删除不当评论、启用/禁用评论
# 普通用户
# 内容浏览
首页:浏览全部已发布文章,可按分类、标签筛选,可搜索文章
文章详情:查看文章完整内容,查看文章分类和标签,查看评论列表
# 互动功能
发表评论:对文章发表评论,支持回复其他用户的评论(需登录)
# 个人中心
个人信息:修改个人信息(昵称、头像、邮箱、电话)
修改密码:修改登录密码
# 功能权限对照表
| 功能模块 | 管理员 | 普通用户 |
|---|---|---|
| 首页 | ✓ | ✓ |
| 管理员管理 | ✓ | - |
| 普通用户管理 | ✓ | - |
| 文章管理 | ✓ | - |
| 分类管理 | ✓ | - |
| 标签管理 | ✓ | - |
| 评论管理 | ✓ | - |
| 文章浏览 | ✓ | ✓ |
| 发表评论 | ✓ | ✓(需登录) |
| 个人信息管理 | ✓ | ✓ |
# 文章状态说明
# 文章状态
- 草稿:文章已创建,未发布,仅管理员可见
- 已发布:文章已发布,所有用户可见
- 已下架:文章已下架,仅管理员可见
# 评论状态
- 启用:评论正常显示
- 禁用:评论被隐藏,不显示在前台
# 默认账号
# 管理员
用户名: admin
密码: admin123
类型: ADMIN
1
2
3
2
3
# 测试用户
用户名: user
密码: user123
类型: USER
1
2
3
2
3
# 核心业务流程
# 用户注册流程
1. 填写注册信息(用户名、密码、昵称、邮箱)
2. 系统创建用户账号(类型:USER、状态:启用)
3. 跳转到登录页
1
2
3
2
3
# 文章发布流程
1. 管理员进入文章管理 → 点击"新增文章"
2. 填写文章信息(标题、摘要、内容、封面)
3. 选择分类和标签
4. 设置文章状态(草稿/已发布)、是否置顶、是否允许评论
5. 提交保存
6. 系统创建文章记录,创建文章-标签关联记录
7. 更新分类和标签的文章数量统计
8. 已发布的文章在前台展示
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 评论发表流程
1. 用户浏览文章详情 → 点击"发表评论"
2. 填写评论内容
3. 提交评论(记录用户ID、文章ID、IP地址)
4. 评论显示在文章下方
5. 其他用户可回复该评论(parent_id指向父评论)
1
2
3
4
5
2
3
4
5
# 文章删除流程
1. 管理员选择要删除的文章
2. 系统收集受影响的分类ID和标签ID
3. 删除文章-标签关联记录
4. 删除文章相关的评论记录
5. 删除文章记录
6. 更新受影响分类和标签的文章数量
1
2
3
4
5
6
2
3
4
5
6
# 技术说明
# 系统架构
- 前端:Vue 3.4.29 + Element Plus 2.8.4 + Vite 5.3.1
- 后端:Django 3.2.23 + Django REST Framework 3.14.0
- 数据库:SQLite(开发)/ MySQL / PostgreSQL(生产)
- 认证:自定义JWT Token
# 访问地址
- 后端API:http://localhost:8000
- 前端页面:http://localhost:5173(开发环境)
# 数据库
- 数据库名:db.sqlite3(开发环境)
- 字符集:utf8mb4
- 总表数:6张表(user、article、category、tag、article_tag、comment)
# API接口规范
RESTful风格:
GET /module/page # 分页查询
POST /module/add # 新增
PUT /module/update # 更新
DELETE /module/delBatch # 批量删除
响应格式:
{
"code": 200,
"msg": "success",
"data": {...}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 系统特色
# 富文本编辑
- 组件:WangEditor 5.1.x、V-md-editor 2.3.18
- 应用:文章内容编辑、评论内容编辑
- 功能:支持文本格式化、图片插入、链接插入、列表、对齐、Markdown语法
# 数据可视化
- 组件:ECharts 5.5.1
- 图表:文章分类统计(饼图)、文章发布趋势(折线图)
- 位置:管理后台首页
# 文件上传
- 单文件限制:100MB
- 支持格式:.jpg、.jpeg、.png、.gif
- 存储方式:按日期创建子目录(YYYYMMDD)
- 访问格式:http://localhost:8000/file/{日期}/{UUID}.{扩展名}
# 工具函数库
- 密码处理:hash_password、verify_password、md5_hash
- 数据验证:is_valid_email、is_valid_phone、is_valid_id_card
- 格式化:format_file_size、format_datetime、format_number
- 随机生成:generate_random_string、generate_order_no、generate_uuid
- 请求处理:get_client_ip、build_query_params、parse_query_string