DJCMS 内容管理系统 - 产品说明文档

一、产品概述

1.1 产品简介

DJCMS 是一款基于 Django 6.0 框架开发的全功能内容管理系统(CMS),面向个人博客、企业官网、技术社区等内容驱动型网站场景。系统采用前后端一体化架构,提供完整的后台管理、前台展示和 RESTful API 接口,开箱即用。

1.2 核心价值

📦 开箱即用

内置完整的文章、页面、分类、标签、评论、媒体库等功能模块,无需二次开发即可上线

🎨 专业管理后台

自定义深色主题侧边栏布局,配备数据仪表盘、媒体库网格视图、站点设置可视化面板

🔍 SEO 友好

全站支持独立 SEO 配置、站点地图、URL 别名、自定义 Head/Footer 代码注入

🔌 RESTful API

完整的 CRUD 接口,支持第三方集成和移动端开发

📱 响应式设计

前台全站适配移动端,后台支持侧边栏收缩

1.3 技术栈

类别技术版本
后端框架Django6.0.5
编程语言Python3.15
数据库SQLite(开发)/ 可扩展至 MySQL/PostgreSQL-
前端框架Bootstrap5.3.2
图标库Font Awesome6.5.1
图表库Chart.js4.4.1
富文本编辑器CKEditor(含上传)4.22.1
REST APIDjango REST Framework-
标签系统django-taggit-
用户认证django-allauth-
跨域支持django-cors-headers-

二、系统架构

2.1 应用模块

DJCMS
├── cms_core      核心数据层 — 12个数据模型、表单、上下文处理器、站点地图
├── cms_admin     管理后台 — 仪表盘、媒体库、站点设置
├── cms_front     前台展示 — 首页、文章、搜索、评论、订阅
├── cms_api       API接口 — RESTful CRUD、搜索、统计
└── djcms         项目配置 — 设置、中间件、路由

2.2 数据流

用户请求 → URL路由 → 中间件(URL重定向/CSRF/认证) → 视图 → 模型 → 模板/序列化器 → 响应

2.3 中间件栈

顺序中间件职责
1CorsMiddleware跨域请求处理
2SecurityMiddleware安全防护
3SessionMiddleware会话管理
4CommonMiddleware通用处理
5CsrfViewMiddlewareCSRF 防护
6AuthenticationMiddleware用户认证
7MessageMiddleware消息提示
8XFrameOptionsMiddleware点击劫持防护
9AccountMiddlewareAllAuth 账户
10URLRedirectMiddleware自定义 URL 重定向

三、功能模块详细说明

3.1 内容管理

3.1.1 文章管理

文章是系统的核心内容单元,支持以下功能:

功能说明
富文本编辑CKEditor 全功能编辑器,支持图片上传、代码高亮、表格
分类归属每篇文章归属一个分类
标签系统支持多标签,使用 django-taggit
三种状态草稿(draft)、已发布(published)、已归档(archived)
推荐标记可标记为推荐文章,首页优先展示
自动摘要未填写摘要时自动截取内容前200字符
浏览计数自动记录浏览次数
SEO 配置独立的 SEO 标题、描述、关键词
批量操作批量发布、批量推荐、导出 JSON/CSV
特色图片支持上传文章封面图

文章数据模型

字段类型说明
titleCharField(200)文章标题
slugSlugField(250)URL 别名,唯一
contentRichTextUploadingField富文本内容
excerptTextField摘要
featured_imageImageField特色图片
categoryForeignKey(Category)所属分类
tagsTaggableManager标签
authorForeignKey(User)作者
statusCharField(20)状态
is_activeBooleanField是否启用
is_featuredBooleanField是否推荐
allow_commentsBooleanField允许评论
publish_dateDateTimeField发布时间
view_countPositiveIntegerField浏览次数
seo_title / seo_description / seo_keywords-SEO 字段

3.1.2 页面管理

页面用于创建"关于我们"、"隐私政策"等静态内容页面:

功能说明
富文本编辑同文章编辑器
首页设置可将页面设为网站首页(全局唯一)
自定义模板支持指定不同的模板文件
SEO 配置独立的 SEO 字段
浏览计数自动记录浏览次数
动态导航已发布页面自动出现在前台导航栏和底部链接

3.1.3 分类管理

功能说明
无限级嵌套支持父子分类,可无限层级
图标配置支持 Font Awesome 图标类名
排序权重自定义排序顺序
SEO 配置独立的 SEO 字段
文章统计自动统计已发布文章数
URL 别名自动生成 slug

3.1.4 标签系统

基于 django-taggit 实现:

3.2 媒体管理

功能说明
多类型支持图片、文档、视频、音频、其他
网格视图后台媒体库以卡片网格展示
图片预览列表和详情页均显示图片缩略图
文件信息自动记录文件大小、图片尺寸
文件大小格式化自动转换为 B/KB/MB 显示
按月归档上传文件按年月目录存储

3.3 评论系统

功能说明
嵌套回复支持多级评论回复
审核机制评论需审核后才能展示
批量审核后台支持批量审核/取消审核
IP 记录自动记录评论者 IP 地址
访客评论无需注册即可评论
评论表单昵称、邮箱、网站(可选)、评论内容

3.4 导航菜单

功能说明
多级菜单支持父子级菜单项
四种链接类型页面、文章、分类、自定义链接
智能URL根据链接类型自动计算URL
排序权重自定义菜单项顺序
打开方式支持当前窗口/新窗口
图标配置每个菜单项可配置图标
启用/禁用可单独控制菜单项显示

3.5 SEO 优化

功能说明
独立 SEO 字段文章/页面/分类均可独立配置 SEO 标题、描述、关键词
站点地图自动生成 sitemap.xml,包含文章/页面/分类/静态页面
URL 别名所有内容均支持自定义 slug
自定义 Head HTML可在 </head> 前注入自定义代码
自定义 Footer HTML可在 </body> 前注入自定义代码
Google Analytics内置 GA 追踪 ID 配置
Open Graph自动生成 OG 标签
Canonical URL自动设置规范链接

3.6 邮件订阅

功能说明
前台订阅表单底部区域嵌入订阅入口
AJAX 提交无刷新订阅体验
令牌验证每个订阅者自动生成唯一令牌
退订功能通过令牌链接安全退订
重复检测自动检查邮箱是否已订阅
Toast 反馈订阅成功/失败即时提示
订阅说明可自定义订阅说明文字

3.7 URL 重定向

功能说明
301/302 重定向支持永久和临时重定向
中间件自动处理请求自动匹配重定向规则
命中计数记录每条规则被触发的次数
路径排除自动跳过 /admin/、/api/、/ckeditor/ 路径
启用/禁用可单独控制规则生效

3.8 内容块

可复用的内容片段,用于侧边栏、横幅、页脚等区域:

类型说明
html自定义 HTML 内容
text纯文本内容
banner横幅广告(含图片和链接)
sidebar侧边栏内容块
footer页脚内容块

3.9 通知系统

功能说明
四种类型信息(info)、成功(success)、警告(warning)、错误(danger)
未读计数导航栏实时显示未读通知数
批量操作批量标记已读/未读
关联链接通知可关联相关 URL
全局通知不绑定用户时为全局通知

3.10 作者档案

扩展 Django 用户模型,为作者提供更丰富的个人资料:

字段说明
bio个人简介
avatar头像
website个人网站
twitterTwitter 账号
githubGitHub 账号
job_title职位
display_email是否公开邮箱
article_count已发布文章数(自动统计)
total_views总浏览量(自动统计)

3.11 站点设置

采用单例模式,全局唯一配置实例,分为 7 大设置分区:

分区包含设置项
基本信息站点名称、描述、Logo、Favicon、页脚文本
SEO默认 SEO 标题、描述、关键词
联系方式邮箱、电话、地址
社交媒体Facebook、Twitter/X、Instagram、LinkedIn、YouTube、GitHub
分析代码Google Analytics ID、自定义 Head/Footer HTML
邮件服务SMTP 服务器、端口、用户、密码、TLS、通知邮箱
系统设置每页文章数、评论开关、维护模式、缓存时间、暗色模式、延迟加载

四、管理后台

4.1 界面设计

4.2 控制台仪表盘

组件说明
统计卡片文章数、分类数、媒体数、浏览量、评论数、订阅数、页面数、通知数
快捷操作写文章、添加分类、上传媒体、新建页面、系统设置
发布趋势图30天文章发布趋势折线图
状态分布图文章状态饼图
分类分布图分类文章分布饼图
媒体类型图媒体文件类型柱状图
最近文章最新5篇文章列表
最新评论最新5条评论列表

4.3 侧边栏菜单

分组菜单项
概览控制台
内容管理文章管理、页面管理、分类管理、评论管理、媒体库
系统邮件订阅、通知管理、内容块、URL 重定向、作者档案、用户管理、用户组、站点设置

4.4 批量操作

模型支持的批量操作
文章发布、取消发布、推荐、取消推荐、导出 JSON、导出 CSV
评论审核通过、取消审核
通知标记已读、标记未读

五、前台展示

5.1 页面列表

页面URL说明
首页/推荐文章大图展示、最新文章网格、分类探索、标签云
文章列表/articles/支持分类/标签/搜索/日期筛选,右侧栏含分类/近期/归档/标签
文章详情/articles/<年>/<月>/<日>/<slug>/TOC 目录、社交分享、作者卡、上下篇、相关文章、评论
分类详情/category/<slug>/分类信息 + 文章列表
标签详情/tag/<tag>/标签文章列表
搜索/search/?q=全文搜索结果
联系我们/contact/联系信息 + 表单
作者详情/author/<username>/作者资料 + 文章列表
静态页面/<slug>/自定义页面内容

5.2 前台特色功能

功能说明
阅读进度条顶部显示文章阅读进度
返回顶部滚动超过 300px 显示返回顶部按钮
TOC 目录自动从文章 h2/h3 生成目录导航
社交分享Twitter、Facebook、LinkedIn、WhatsApp、Telegram、复制链接
图片懒加载IntersectionObserver 实现,自动降级
消息提示Bootstrap Alert 自动 5 秒关闭
表单防重复提交时按钮禁用 + loading 状态
面包屑导航多级面包屑路径
暗色模式全站暗色主题支持
动态导航已发布页面自动出现在导航栏和底部

5.3 前台导航栏

项目说明
Logo/站点名链接至首页
首页固定导航项
文章链接至文章列表
分类下拉菜单展示所有分类
动态页面自动显示所有已发布的非首页页面
联系我们固定导航项
管理入口仅管理员可见,显示未读通知 badge
搜索框右侧搜索框

5.4 前台页脚

四栏布局:

栏目内容
站点信息站点名称、描述、联系邮箱、联系电话
快速链接首页、文章列表、动态页面、联系我们
热门分类前5个分类链接
关注我们社交媒体按钮、邮件订阅表单

六、RESTful API

6.1 接口列表

接口方法权限说明
/api/articles/GET/POST读取公开/创建需认证文章列表与创建
/api/articles/<slug>/GET/PUT/PATCH/DELETE读取公开/修改需认证文章详情与修改
/api/articles/archive/GET公开文章归档(按年月分组)
/api/articles/<slug>/increment_view/POST公开浏览量递增
/api/categories/GET/POST读取公开/创建需认证分类列表与创建
/api/categories/<slug>/GET/PUT/PATCH/DELETE读取公开/修改需认证分类详情与修改
/api/pages/GET/POST读取公开/创建需认证页面列表与创建
/api/pages/<slug>/GET/PUT/PATCH/DELETE读取公开/修改需认证页面详情与修改
/api/pages/<slug>/increment_view/POST公开浏览量递增
/api/media/GET/POST仅管理员媒体列表与上传
/api/media/<pk>/GET/PUT/PATCH/DELETE仅管理员媒体详情与修改
/api/comments/GET/POST读取公开/创建公开评论列表与创建
/api/settings/GET/PUT/PATCH仅管理员站点设置读写
/api/stats/GET公开站点统计数据
/api/search/?q=GET公开全局搜索(文章+页面)

6.2 API 查询参数

资源参数说明
文章?category=&tag=&author=&search=&featured=true多维度筛选
分类?parent=null获取顶级分类
媒体?type=image按类型筛选
分页?page=1页码(默认每页20条)

6.3 站点统计接口

GET /api/stats/ 返回:

{
    "total_articles": 158,
    "published_articles": 145,
    "total_categories": 8,
    "total_comments": 10,
    "total_views": 50000,
    "total_subscribers": 25,
    "total_pages": 2,
    "total_media": 15
}

七、数据模型总览

系统共包含 12 个核心数据模型:

模型说明关键特性
Category分类无限级嵌套、SEO、图标
Page页面首页设置、自定义模板、SEO
Article文章富文本、标签、推荐、SEO、批量操作
Media媒体多类型、缩略图、文件信息
SiteSettings站点设置单例模式、7大分区
Comment评论嵌套回复、审核机制
Menu菜单导航菜单容器
MenuItem菜单项四种链接类型、多级
NewsletterSubscriber订阅者令牌验证、退订
URLRedirectURL重定向301/302、命中计数
ContentBlock内容块五种类型、可复用
Notification通知四种类型、已读/未读
AuthorProfile作者档案扩展用户、统计

八、安全机制

机制说明
CSRF 防护全站 CSRF Token 验证
XSS 防护Django 模板自动转义、CKEditor 内容过滤
SQL 注入防护Django ORM 参数化查询
点击劫持防护X-Frame-Options 中间件
CORS 控制django-cors-headers 可配置跨域策略
认证授权Django Auth + django-allauth
API 权限DRF IsAuthenticatedOrReadOnly / IsAdminUser
评论审核评论默认需审核后展示
密码安全Django 内置密码哈希

九、部署说明

9.1 环境要求

9.2 快速启动

# 1. 克隆项目
git clone <repository_url>
cd djcms

# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate

# 3. 安装依赖
pip install django django-ckeditor django-ckeditor-uploader django-taggit
pip install djangorestframework django-cors-headers django-allauth Pillow

# 4. 初始化数据库
python manage.py migrate

# 5. 加载种子数据
python seed_data.py

# 6. 生成测试文章(可选)
python manage.py generate_articles

# 7. 创建超级管理员
python manage.py createsuperuser

# 8. 启动开发服务器
python manage.py runserver 0.0.0.0:8000

9.3 生产部署建议

组件推荐方案
WSGI 服务器Gunicorn
反向代理Nginx
数据库PostgreSQL / MySQL
静态文件Nginx 直接服务 / CDN
媒体文件对象存储(OSS/S3)
HTTPSLet's Encrypt + Nginx
进程管理systemd / Supervisor

9.4 关键配置项

配置生产环境建议
DEBUGFalse
ALLOWED_HOSTS设置具体域名
SECRET_KEY使用环境变量
DATABASE切换至 PostgreSQL/MySQL
EMAIL_BACKEND切换至 SMTP
CORS_ALLOW_ALL_ORIGINSFalse,设置具体域名

十、项目目录结构

djcms/
├── cms_core/                     # 核心数据层
│   ├── management/commands/      # 管理命令
│   │   └── generate_articles.py  # 批量生成文章
│   ├── migrations/               # 数据库迁移
│   ├── admin.py                  # Admin 后台注册
│   ├── context_processors.py     # 全局上下文处理器
│   ├── forms.py                  # 表单定义
│   ├── models.py                 # 数据模型(12个)
│   └── sitemaps.py               # SEO 站点地图
│
├── cms_admin/                    # 管理后台
│   ├── urls.py                   # 后台路由
│   └── views.py                  # 仪表盘/媒体库/设置
│
├── cms_front/                    # 前台展示
│   ├── urls.py                   # 前台路由
│   └── views.py                  # 所有前台视图
│
├── cms_api/                      # REST API
│   ├── serializers.py            # DRF 序列化器
│   ├── urls.py                   # API 路由
│   └── views.py                  # API 视图集
│
├── djcms/                        # 项目配置
│   ├── middleware.py             # URL 重定向中间件
│   ├── settings.py               # 全局配置
│   └── urls.py                   # 根路由
│
├── static/                       # 静态资源
│   ├── css/
│   │   ├── style.css             # 前台样式(863行)
│   │   ├── admin.css             # 后台样式(556行)
│   │   ├── dark-mode.css         # 暗色模式(145行)
│   │   └── ckeditor.css          # 编辑器样式(82行)
│   └── js/
│       └── main.js               # 前台脚本(170行)
│
├── templates/                    # 模板文件
│   ├── base.html                 # 前台基础模板
│   ├── admin/                    # 后台模板(15+个)
│   └── cms_front/                # 前台页面模板(9个)
│
├── media/                        # 媒体上传目录
├── logs/                         # 日志目录
├── db.sqlite3                    # SQLite 数据库
├── manage.py                     # Django 管理脚本
└── seed_data.py                  # 种子数据脚本

十一、版本信息

项目版本
系统版本DJCMS v2.0
框架版本Django 6.0.5
Python 版本3.15
数据库SQLite 3

十二、未来规划

方向计划功能
多语言支持中英文切换
主题系统可视化主题切换
插件机制支持第三方插件安装
全文搜索Elasticsearch 集成
缓存优化Redis 缓存层
实时通信WebSocket 通知推送
移动端 API完善的移动端接口
自动化测试完整的单元测试和集成测试
Docker 部署一键 Docker Compose 部署
CI/CDGitHub Actions 自动化流水线