博客系统技术需求文档(基于 Flask)
以下内容是AI基于要求生成的技术文档,仅供参考~
🧱 一、系统架构设计概览
层级 | 内容 |
前端层 | HTML + Jinja2 模板引擎,集成 Markdown 编辑器、代码高亮 |
后端层 | Flask 框架,RESTful 风格,Jinja2 渲染 |
数据库 | SQLite(开发),MySQL/PostgreSQL(部署) |
用户认证 | 无需注册/登录,仅管理员身份 |
文章编辑 | Markdown + 可视化富文本 |
部署建议 | Gunicorn + Nginx + Supervisor 或 Docker 方式 |
📌 二、功能需求详解
✅ 1. 文章管理系统
📄 1.1 发布、草稿和编辑
- 功能细节:
-
- 草稿与已发布状态区分(字段
status
:draft
/published
) - 编辑器支持 Markdown + 图片上传 + 预览
- 支持二次编辑:包括内容、标签、分类、权限
- 字段支持:标题、正文、作者、发布日期、分类、标签、可见权限
- 自动保存草稿功能(可选)
- 草稿与已发布状态区分(字段
- 技术实现:
-
- Markdown 编辑器:
Editor.md
/SimpleMDE
- Markdown 渲染:
markdown
+Flask-Markdown
- 图片上传支持:配置
Flask-Uploads
或Flask-Dropzone
- Markdown 编辑器:
✅ 2. 文章浏览与阅读量统计
📊 2.1 阅读统计
- 功能细节:
-
- 每篇文章记录
view_count
- 全站统计总阅读量(写入到数据库或缓存)
- 首页展示总访问量、每篇文章阅读量
- 同一 IP / 用户短时间内重复访问不计数(可通过
session
控制)
- 每篇文章记录
- 技术实现:
-
- 数据库字段:
Article.view_count
、全局BlogStats.total_views
- 可选缓存:
Redis
缓存中间数据,降低数据库压力
- 数据库字段:
✅ 3. 首页展示与内容筛选
🏠 3.1 首页
- 展示最近 10 篇可见文章
- 简洁卡片式排布:标题、时间、摘要、阅读量、标签、分类等
🔍 3.2 搜索功能
- 功能细节:
-
- 支持关键词模糊匹配标题和正文
- 结果页分页展示
- 技术实现:
-
- 数据库搜索(LIKE)或全文搜索(使用
Whoosh
,Elasticsearch
可选) - 表单查询:
GET /search?q=xxx
- 数据库搜索(LIKE)或全文搜索(使用
✅ 4. 分类与标签系统
🧩 4.1 分类系统(系列分类)
- 功能细节:
-
- 类似“专栏”、“专题系列”,一组文章属于一个系列
- 一个系列页展示所有属于它的文章
🏷️ 4.2 标签系统
- 功能细节:
-
- 每篇文章支持多个标签
- 标签云展示
- 点击标签显示相关文章
- 技术实现:
-
- 多对多表设计:
Article
↔Tag
(中间表) - 单对多表设计:
Article
→Series
- 多对多表设计:
✅ 5. 可见权限管理
- 功能细节:
-
- 文章可设置权限:公开、私密、仅通过链接访问
- 访问权限字段:
visibility
(public
,private
,unlisted
) - 首页仅展示
public
文章
- 技术实现:
if article.visibility == 'public' or (is_admin and article.visibility == 'private'):show_article()
else:return 403
✅ 6. 评论系统
💬 6.1 内置评论
- 功能细节:
-
- 匿名访客可以留言
- 评论需要审核(可选)
- 支持 Markdown/纯文本评论
- 每篇文章底部展示评论列表
- 嵌套评论(可选)
- 技术实现:
-
- 评论表结构:
id, article_id, username, content, created_at
- 可选开源评论服务:
Gitalk
,Disqus
(免开发)
- 评论表结构:
✅ 7. 博客后台管理
⚙️ 7.1 博主专属后台(本地密码验证,无需注册功能)
- 功能细节:
-
- 添加、编辑、删除文章
- 标签、分类管理
- 评论审核(可选)
- 查看访问量、文章统计、草稿列表
- 文章可切换草稿与发布状态
- 可管理“关于我”、“友链”等信息页
- 技术实现:
-
- 简单密码认证:内置身份验证或 token 验证
- 表单提交:
Flask-WTF
- 后台路由统一以
/admin/
前缀隔离
✅ 8. 私信系统
📩 8.1 私信功能(访客 → 博主)
- 功能细节:
-
- 访客填写昵称 + 内容
- 后台查看私信记录
- 私信不公开显示,可设邮件通知(可选)
- 技术实现:
-
- 私信表结构:
id, username, content, created_at, is_read
- 可选集成邮件通知:
Flask-Mail
- 私信表结构:
✅ 9. 代码高亮
- 功能细节:
-
- 支持 Markdown 中的代码块高亮
- 支持多种语言(Python, JS, HTML...)
- 技术实现:
-
- 前端:
highlight.js
/Prism.js
- 后端:
Pygments
(配合markdown
库渲染)
- 前端:
✅ 10. 文章归档功能
- 功能细节:
-
- 按年份/月份归档文章(例如:2025年5月)
- 页面显示该月内所有文章
- 技术实现:
Article.query.filter(func.strftime('%Y-%m', Article.created_at) == '2025-05')
📦 三、数据库核心模型设计(概要)
class Article(db.Model):id, title, body, created_at, updated_at, status, visibilityview_count, tags, series_idclass Tag(db.Model):id, namearticles = relationship('Article', secondary=association_table)class Series(db.Model):id, name, descriptionclass Comment(db.Model):id, article_id, username, content, created_atclass PrivateMessage(db.Model):id, username, content, created_at, is_readclass SiteStats(db.Model):total_views, total_articles, total_comments
🛠 四、推荐技术栈汇总
模块 | 推荐技术 |
后端框架 | Flask |
数据库 | SQLite(开发)/ MySQL(生产) |
ORM | SQLAlchemy |
表单处理 | Flask-WTF |
Markdown 渲染 |
|
前端编辑器 |
|
搜索引擎 |
|
评论系统 | 自建 / Gitalk / Disqus |
可选缓存 | Redis(统计优化) |
部署方式 | Gunicorn + Nginx / Docker |
后台安全 | 简单 Token / 密码验证(无需用户系统) |
前端展示 | Bootstrap / Tailwind(推荐) |
🔐 五、安全与优化建议
- 使用 CSRF 防护(Flask-WTF 默认支持)
- 图片上传路径保护、防止 XSS(过滤 HTML)
- 评论内容过滤恶意脚本(
bleach
库) - 日志记录访问 IP 和操作记录
- 数据库备份脚本定期运行
📌 六、后续扩展方向(非必需但推荐)
- 多语言支持(如中英切换)
- RSS订阅功能
- 定时发布文章
- 管理员登录日志审计
- API 开放接口(供移动端、第三方平台调用)
✅ 七、开发建议顺序(MVP)
优先级 | 功能模块 |
🥇 必做 | 首页展示、文章发布/编辑/草稿、Markdown 编辑器、阅读统计、分类标签系统 |
🥈 次优先 | 评论功能、关键词搜索、访问量统计、系列分类 |
🥉 可后加 | 私信功能、文章权限、归档、后台统计面板 |