**项目链接**
- 在线体验:https://www.zhtest.top
- 源码仓库:https://github.com/zhang123999-qq/DjangoBlog.git
**1、立项背景和目标**
随着个人技术品牌的建立需求日益增长,传统社交平台难以满足深度技术分享的格式要求和个性化展示需求。本项目旨在构建一套自主可控的个人博客系统,支持Markdown富文本编辑、代码高亮、SEO优化等专业功能,打造独立于第三方平台的技术内容输出渠道,建立个人技术影响力。
**2、软件功能、核心功能模块**
| 模块 | 功能说明 |
|------|----------|
| 内容管理 | 文章CRUD、富文本编辑器、Markdown支持、代码语法高亮、草稿/发布状态切换 |
| 媒体资源 | 图片/文件上传、OSS存储集成、图片压缩与CDN加速 |
| 用户体系 | JWT认证、OAuth第三方登录、角色权限(普通用户/管理员)、个人资料管理 |
| 互动系统 | 文章评论、点赞收藏、评论审核与垃圾过滤 |
| SEO引擎 | 自定义URL slug、Meta标签管理、Sitemap自动生成、Open Graph协议支持 |
| 工具箱 | IP归属地查询、.gitignore生成器、Base64编解码等开发辅助工具 |
| 运维管理 | 站点全局配置、访问统计、缓存策略、HTTPS证书管理 |
**3、业务流程、功能路径**
```
访客流程:首页浏览 → 文章详情 → 评论互动 → 分享传播
用户流程:注册/登录 → 个人中心 → 收藏管理 → 订阅更新
创作流程:登录后台 → 新建文章 → 编辑排版 → 上传配图 → 预览 → 发布/定时发布
管理流程:内容审核 → 分类整理 → 用户管理 → 数据分析 → 站点配置
## 业务流程
```
访客流程:首页浏览 → 文章详情 → 评论互动 → 分享传播
用户流程:注册/登录 → 个人中心 → 收藏管理 → 订阅更新
创作流程:登录后台 → 新建文章 → 编辑排版 → 上传配图 → 预览 → 发布/定时发布
管理流程:内容审核 → 分类整理 → 用户管理 → 数据分析 → 站点配置
```
---
## 项目实现
**1、整体架构和设计思路**
采用经典MVT分层架构,前后端耦合度低,便于独立迭代与维护。
| 层级 | 技术选型 | 设计考量 |
|------|----------|----------|
| 表现层 | Django Template + 原生JS/CSS | 模板继承复用,轻量化前端减少首屏加载 |
| 业务层 | Django 4.2 LTS | 长期支持版本,安全补丁持续更新 |
| 数据层 | MySQL + Django ORM | 关系型数据建模,ORM统一数据访问 |
| 部署层 | Nginx + Gunicorn + HTTPS | 反向代理负载均衡,Let's Encrypt自动续签 |
| 存储层 | 本地存储 / OSS扩展 | 媒体资源分级存储,支持平滑迁移 |
**2、个人负责模块及量化成果**
| 负责模块 | 具体工作 | 量化成果 |
|----------|----------|----------|
| 安全审计 | 文件上传漏洞修复、XSS防护加固 | 修复14个安全风险点,审计评分8.7/10 |
| 代码质量 | Flake8规范整治、代码格式化 | 修复3907处格式问题,合规率100% |
| 前端重构 | 内联脚本抽取、DOM操作安全化 | 提取9个独立JS模块,消除全部innerHTML风险 |
| 测试覆盖 | 测试用例编写与CI集成 | 覆盖263个测试用例,核心路径100%覆盖 |
**3、技术难点与解决方案**
| 难点 | 问题描述 | 解决方案 |
|------|----------|---------|
| 环境配置 | 宝塔面板启动时不加载.env,导致生产环境DEBUG=True暴露敏感信息 | 在宝塔项目设置中手动注入环境变量,覆盖默认配置 |
| CI/CD调试 | GitHub Actions测试持续失败,涉及4层嵌套问题 | 系统化排查:修复test.py语法错误→清理环境变量覆盖→添加migrate步骤→补充email字段约束 |
| XSS