DJCMS 使用文档

DJCMS 内容管理系统的完整使用指南,涵盖安装部署、后台管理、前台使用及API接口等全部功能。

快速开始

1.1 安装部署

环境要求

安装步骤

第一步:获取项目代码

bashgit clone <项目仓库地址>
cd djcms

第二步:创建虚拟环境

bashpython -m venv venv

# macOS/Linux
source venv/bin/activate

# Windows
venv\Scripts\activate

第三步:安装依赖

bashpip install django django-ckeditor django-ckeditor-uploader django-taggit \
    djangorestframework django-cors-headers django-allauth Pillow

第四步:初始化数据库

bashpython manage.py migrate

执行后会自动创建 db.sqlite3 数据库文件和所有数据表。

第五步:加载初始数据

bashpython seed_data.py

此脚本会创建:

第六步:创建管理员账号

bashpython manage.py createsuperuser

按提示输入用户名、邮箱和密码。

第七步:启动服务器

bashpython manage.py runserver 0.0.0.0:8000

第八步:访问系统

页面地址
前台首页http://localhost:8000/
管理后台http://localhost:8000/cms-admin/dashboard/
Django Adminhttp://localhost:8000/admin/

1.2 生成测试数据(可选)

如需快速填充大量文章用于测试:

bashpython manage.py generate_articles

此命令会生成约150篇涵盖各分类的测试文章。


管理后台

2.1 登录后台

  1. 访问 http://localhost:8000/admin/login/
  2. 输入创建的管理员用户名和密码
  3. 登录成功后自动跳转至控制台仪表盘

2.2 控制台仪表盘

仪表盘是管理后台的首页,提供站点运营的全局概览。

统计卡片

页面顶部展示8个核心指标:

指标说明
文章总数所有状态的文章数量
分类数活跃分类数量
媒体数媒体库文件总数
总浏览量所有文章的浏览量之和
评论数评论总数(含待审核)
订阅数活跃邮件订阅者数量
页面数已发布页面数量
通知数未读通知数量

快捷操作

提供5个常用操作的快捷入口:

数据图表

4个 Chart.js 可视化图表:

图表类型说明
发布趋势折线图最近30天的文章发布数量
文章状态饼图草稿/已发布/已归档的比例
分类分布饼图各分类的文章数量
媒体类型柱状图图片/文档/视频/音频/其他的数量

最近动态

2.3 侧边栏导航

侧边栏按功能分组:

分组菜单项说明
概览控制台返回仪表盘
内容管理文章管理文章列表和增删改查
页面管理页面列表和增删改查
分类管理分类列表和增删改查
评论管理评论审核和管理
媒体库媒体文件管理
系统邮件订阅订阅者管理
通知管理通知的增删改查
内容块可复用内容片段
URL重定向重定向规则管理
作者档案作者资料管理
用户管理系统用户管理
用户组用户组管理
站点设置全局站点配置

2.4 退出登录

点击侧边栏底部的用户名区域,然后点击「退出登录」按钮。


文章管理

3.1 文章列表

进入方式:侧边栏 → 内容管理 → 文章管理

列表功能

批量操作

  1. 勾选要操作的文章(可勾选全选框)
  2. 在列表上方的操作下拉框中选择操作
  3. 点击「执行」
操作说明
设为已发布将选中的草稿文章发布
设为草稿将选中的文章改为草稿状态
设为推荐将选中的文章标记为推荐
取消推荐取消选中文章的推荐标记
导出选中文章(JSON)导出为JSON格式文件
导出选中文章(CSV)导出为CSV格式文件(可用Excel打开)

3.2 创建文章

进入方式:文章列表页右上角点击「增加文章」按钮

填写步骤

第一步:基本信息

字段是否必填说明
标题文章标题,最多200字符
URL别名自动从标题生成,可手动修改
内容使用CKEditor富文本编辑器编写
摘要简短描述,留空则自动截取内容前200字符
特色图片上传文章封面图

CKEditor编辑器工具栏说明

工具组功能
文档源代码编辑、预览、打印、模板
剪贴板剪切、复制、粘贴、撤销、重做
基本样式加粗、斜体、下划线、删除线
段落有序/无序列表、缩进、引用、对齐
链接插入链接、取消链接、锚点
插入图片、表格、水平线、特殊字符
样式样式、格式、字体、字号
颜色文字颜色、背景色

第二步:分类与标签

字段是否必填说明
分类选择文章所属分类
标签输入标签,用逗号分隔;输入时会出现已有标签的自动补全

第三步:发布设置

字段是否必填说明
状态草稿/已发布/已归档
启用是否在前台显示
推荐勾选后文章在首页推荐区展示
允许评论是否允许访客评论
作者留空则自动设为当前登录用户
发布时间默认为当前时间

第四步:SEO设置(可选)

展开「SEO设置」折叠区域:

字段说明
SEO标题搜索引擎显示的标题,留空则使用文章标题
SEO描述搜索引擎显示的描述,留空则使用摘要
SEO关键词逗号分隔的关键词

第五步:保存

3.3 编辑文章

  1. 在文章列表中点击文章标题
  2. 修改需要更新的字段
  3. 点击保存

3.4 删除文章

  1. 在文章列表中勾选要删除的文章
  2. 在操作下拉框中选择「删除选中 的 文章」
  3. 确认删除操作
⚠️ 删除操作不可恢复,请谨慎操作。

3.5 文章状态说明

状态前台显示说明
草稿❌ 不显示正在编辑中,尚未发布
已发布✅ 显示已公开发布,所有人可见
已归档❌ 不显示已下架归档,不再公开展示

页面管理

4.1 页面与文章的区别

特性文章页面
用途博客/新闻类内容静态内容(关于我们、隐私政策等)
分类归属分类无分类
标签支持标签无标签
评论支持评论无评论
首页不能设为首页可以设为首页
URL格式/articles/年/月/日/slug//<slug>/
导航显示不自动显示自动出现在导航栏和底部

4.2 创建页面

进入方式:侧边栏 → 内容管理 → 页面管理 → 点击「增加页面」

字段是否必填说明
标题页面标题
URL别名自动生成,如 aboutprivacy
内容CKEditor富文本编辑
摘要页面简短描述
特色图片页面封面图
状态草稿/已发布
启用是否启用
设为首页勾选后该页面成为网站首页
模板默认 cms_front/page.html
作者留空自动设为当前用户

4.3 设为首页

  1. 编辑要设为首页的页面
  2. 勾选「设为首页」
  3. 保存
💡 系统保证只有一个页面为首页。设为新首页时,旧首页会自动取消。

4.4 页面导航

已发布且启用的页面(非首页)会自动出现在:

无需手动添加导航链接。


分类管理

5.1 创建分类

进入方式:侧边栏 → 内容管理 → 分类管理 → 点击「增加分类」

字段是否必填说明
分类名称如"技术前沿"、"生活随笔"
URL别名自动生成,如 techlife
描述分类描述,显示在分类详情页
父分类选择父分类可创建子分类
图标Font Awesome图标类名,如 fa-codefa-heart
排序数字越小越靠前,默认0
启用是否启用

5.2 创建子分类

  1. 创建新分类时,在「父分类」下拉框中选择上级分类
  2. 支持无限级嵌套

示例分类结构:

技术前沿 (tech)
├── Web开发 (web)
├── Python (python)
├── JavaScript (javascript)
└── 运维DevOps (devops)
生活随笔 (life)
设计创意 (design)
教程资源 (tutorial)

5.3 分类图标

图标字段填写 Font Awesome 6 的图标类名。

常用图标参考:

分类图标类名
技术fa-code
Pythonfa-python (品牌图标 fab fa-python)
设计fa-palette
生活fa-heart
教程fa-graduation-cap
运维fa-server
Webfa-globe
数据库fa-database

完整图标列表:https://fontawesome.com/icons


媒体库

6.1 上传媒体

方式一:通过媒体库页面上传

  1. 进入侧边栏 → 内容管理 → 媒体库
  2. 点击「增加媒体」按钮
  3. 填写信息并上传文件

方式二:在编辑器中上传

  1. 在文章/页面的CKEditor编辑器中点击「图片」按钮
  2. 点击「上传」标签页
  3. 选择本地图片文件
  4. 点击「上传到服务器」

6.2 媒体信息

字段说明
标题媒体文件名称
文件上传的文件(支持图片/文档/视频/音频)
缩略图可单独上传缩略图
类型图片/文档/视频/音频/其他
替代文本图片的alt属性,用于无障碍访问和SEO
说明图片的caption说明
描述详细描述

6.3 文件上传路径

类型存储路径
文章特色图片media/articles/
页面特色图片media/pages/
编辑器上传media/uploads/年/月/
缩略图media/uploads/thumbnails/
作者头像media/avatars/
站点Logomedia/settings/

6.4 在文章中插入图片

  1. 在CKEditor编辑器中点击「图片」按钮
  2. 选择「上传」标签页,上传本地图片
  3. 或选择「URL」标签页,输入图片地址
  4. 设置图片属性(宽度、替代文本等)
  5. 点击「确定」插入

评论管理

7.1 评论流程

访客提交评论 → 评论状态为「待审核」 → 管理员审核 → 评论在前台显示

7.2 审核评论

  1. 进入侧边栏 → 内容管理 → 评论管理
  2. 查看待审核评论(筛选「待审核」)
  3. 对单条评论:点击评论进入编辑页,修改「已审核」字段
  4. 批量审核:勾选评论 → 选择「审核通过」→ 执行

7.3 评论管理操作

操作说明
审核通过评论在前台文章下方显示
取消审核评论从前台隐藏
删除永久删除评论

7.4 评论开关

在站点设置中可以全局开启/关闭评论功能:

  1. 进入侧边栏 → 系统 → 站点设置
  2. 找到「系统设置」区域
  3. 勾选/取消「启用评论」

也可以在单篇文章中控制:


导航菜单

8.1 菜单概念

系统使用「菜单 → 菜单项」的两层结构:

8.2 创建菜单

  1. 进入侧边栏 → 系统 → 菜单管理(在Django Admin中)
  2. 点击「增加菜单」
  3. 填写名称和URL别名(如 main
  4. 保存

8.3 添加菜单项

方式一:内联编辑

  1. 编辑菜单时,在页面下方的「菜单项」内联区域
  2. 点击「增加菜单项」
  3. 填写标题、链接类型、排序等
  4. 保存

方式二:单独创建

  1. 在菜单项列表页点击「增加菜单项」
  2. 填写以下信息:
字段说明
菜单选择所属菜单
父菜单项选择父级可创建下拉子菜单
标题显示文字,如"关于我们"
链接类型页面/文章/分类/自定义链接
链接URL仅自定义链接类型需要填写
关联页面/文章/分类根据链接类型选择对应内容
图标Font Awesome图标类名
打开方式当前窗口/新窗口
排序数字越小越靠前
启用是否显示

8.4 链接类型说明

类型说明URL示例
页面链接到已发布的页面/about/
文章链接到已发布的文章/articles/2024/01/15/hello/
分类链接到分类详情页/category/python/
自定义链接手动输入任意URLhttps://example.com

8.5 创建下拉菜单

  1. 先创建父菜单项(如"技术")
  2. 创建子菜单项时,在「父菜单项」中选择"技术"
  3. 前台会自动渲染为下拉菜单

站点设置

9.1 访问站点设置

进入方式:侧边栏 → 系统 → 站点设置

💡 站点设置为单例模式,全局只有一份配置。首次访问时自动创建。

9.2 设置项详解

基本信息

设置项说明示例
站点名称显示在导航栏和标题我的博客
站点描述网站简短描述一个关于技术的博客
Logo站点Logo图片上传图片
Favicon浏览器标签页图标上传.ico或.png
页脚文本底部版权信息© 2024 我的博客

SEO设置

设置项说明
默认SEO标题全局默认的页面标题
默认SEO描述全局默认的页面描述
默认SEO关键词全局默认的关键词
💡 文章/页面/分类的独立SEO设置会覆盖全局默认值。

联系方式

设置项说明
联系邮箱显示在联系页面和页脚
联系电话显示在联系页面
联系地址显示在联系页面

社交媒体

设置项说明
FacebookFacebook页面URL
Twitter/XTwitter个人页URL
InstagramInstagram页面URL
LinkedInLinkedIn页面URL
YouTubeYouTube频道URL
GitHubGitHub页面URL
💡 留空的社交链接不会在前台显示。

分析与追踪

设置项说明
Google Analytics IDGA追踪ID,如 G-XXXXXXXXXX
自定义Head HTML</head> 前注入的代码
自定义Footer HTML</body> 前注入的代码

自定义HTML的常见用途

邮件订阅

设置项说明
启用邮件订阅开启/关闭前台订阅功能
订阅说明显示在订阅表单旁的说明文字

邮件服务器

设置项说明常用值
SMTP服务器邮件服务器地址smtp.gmail.com
SMTP端口服务器端口587(TLS) / 465(SSL)
SMTP用户登录用户名your@gmail.com
SMTP密码登录密码
使用TLS是否启用TLS加密✅ 推荐
通知邮箱接收通知的邮箱admin@example.com

常用SMTP配置

邮件服务SMTP服务器端口TLS
Gmailsmtp.gmail.com587
QQ邮箱smtp.qq.com587
163邮箱smtp.163.com465/994
阿里企业邮smtp.mxhichina.com465

系统设置

设置项说明默认值
每页文章数文章列表每页显示数量10
启用评论全局评论开关
维护模式开启后前台显示维护页面
缓存时间缓存过期时间(秒)300
启用暗色模式前台暗色模式开关
启用延迟加载图片延迟加载

9.3 保存设置

  1. 修改需要更新的设置项
  2. 点击页面底部的「保存设置」按钮
  3. 页面提示「站点设置已保存!」即表示成功

邮件订阅

10.1 前台订阅

访客可以在前台页脚的订阅区域输入邮箱地址,点击订阅按钮完成订阅。

订阅流程:

  1. 访客输入邮箱 → AJAX提交 → 返回成功/失败提示
  2. 订阅成功后,邮箱记录到数据库
  3. 如果邮箱已订阅,提示「该邮箱已订阅」

10.2 管理订阅者

进入方式:侧边栏 → 系统 → 邮件订阅

操作说明
查看列表查看所有订阅者
筛选按激活状态、订阅时间筛选
搜索按邮箱搜索
导出CSV勾选订阅者 → 选择「导出选中的订阅者(CSV)」→ 执行

10.3 退订

访客可以通过退订链接取消订阅:

  1. 每个订阅者有唯一的验证令牌
  2. 访问 /newsletter/unsubscribe/<token>/ 即可退订
  3. 退订后邮箱记录保留,状态变为「未激活」

URL重定向

11.1 创建重定向规则

进入方式:侧边栏 → 系统 → URL重定向 → 点击「增加URL重定向」

字段说明示例
原路径旧URL路径/old-page/
新路径目标URL/new-page/https://example.com
重定向类型301永久 / 302临时301
启用是否生效

11.2 重定向类型选择

类型HTTP状态码适用场景
301永久重定向301页面永久迁移,SEO权重转移
302临时重定向302临时跳转,如活动页面

11.3 工作原理

URL重定向中间件在每次请求时自动检查:

  1. 跳过 /admin//cms-admin//api//ckeditor//static//media/ 路径
  2. 匹配到活跃规则时,自动递增命中次数并执行重定向
  3. 未匹配则正常处理请求

11.4 常见用途


内容块

12.1 什么是内容块

内容块是可复用的内容片段,可以在模板中按需加载,用于侧边栏、横幅广告、页脚等区域。

12.2 内容块类型

类型说明使用场景
HTML自定义HTML代码广告代码、自定义组件
纯文本普通文本内容公告、提示信息
横幅广告含图片和链接广告横幅
侧边栏侧边栏内容推荐阅读、热门文章
页脚页脚区域内容友情链接、合作伙伴

12.3 创建内容块

  1. 进入侧边栏 → 系统 → 内容块 → 点击「增加内容块」
  2. 填写信息:
字段说明
名称内容块名称,如"侧边栏公告"
标识符唯一标识,如 sidebar-notice
类型选择内容块类型
内容HTML或文本内容
图片横幅类型的图片
链接URL横幅点击跳转的URL
排序数字越小越靠前
启用是否生效

通知系统

13.1 通知类型

类型颜色说明
信息(info)蓝色一般信息通知
成功(success)绿色操作成功通知
警告(warning)黄色需要注意的事项
错误(danger)红色错误或异常通知

13.2 创建通知

  1. 进入侧边栏 → 系统 → 通知管理 → 点击「增加通知」
  2. 填写信息:
字段说明
标题通知标题
消息通知详细内容
类型info/success/warning/danger
用户留空则为全局通知
链接点击通知跳转的URL

13.3 通知显示


作者档案

14.1 创建作者档案

  1. 进入侧边栏 → 系统 → 作者档案 → 点击「增加作者档案」
  2. 选择关联的用户账号
  3. 填写扩展信息:
字段说明
头像作者头像图片
职位如"高级工程师"、"产品经理"
个人简介详细的自我介绍
个人网站博客或个人主页URL
公开邮箱是否在前台显示邮箱
TwitterTwitter用户名
GitHubGitHub用户名

14.2 作者详情页

前台提供作者详情页 /author/<username>/,展示:


前台使用

15.1 首页

首页展示以下内容:

区域说明
推荐文章1篇大图+3篇小图的推荐文章展示区
最新文章9篇最新文章的卡片网格
分类探索8个分类卡片
标签云15个热门标签
统计栏文章数、分类数、浏览量、作者数
投稿区号召性用语区域
💡 如果设置了自定义首页(页面管理中勾选「设为首页」),首页将显示该页面内容。

15.2 文章列表

访问 /articles/ 查看所有已发布文章。

筛选功能

筛选方式操作
按分类点击右侧栏分类列表中的分类名
按标签点击标签云中的标签
按搜索在搜索框输入关键词
按日期点击右侧栏归档列表中的月份

右侧栏内容

15.3 文章详情

文章详情页包含:

区域说明
面包屑首页 › 文章标题
文章标题大标题
元信息作者、日期、分类、阅读时间、浏览量
特色图文章封面大图
目录自动从h2/h3标题生成
正文富文本内容
标签文章标签列表
社交分享Twitter/Facebook/LinkedIn/WhatsApp/Telegram/复制链接
作者卡作者头像、简介、社交链接
上下篇上一篇文章和下一篇文章
相关文章同分类的3篇相关文章
评论区已审核评论列表和评论表单

15.4 搜索

15.5 联系我们

访问 /contact/ 页面:

左侧:联系信息(邮箱、电话、地址、社交链接)

右侧:联系表单

字段说明
姓名必填,至少2字符
邮箱必填
主题必填
消息必填,至少10字符

提交后系统会发送邮件至站点设置中的通知邮箱。

15.6 邮件订阅

在页脚区域找到订阅表单:

  1. 输入邮箱地址
  2. 点击订阅按钮
  3. 系统提示订阅成功/失败

15.7 暗色模式

在站点设置中启用暗色模式后,前台自动切换为深色主题。


API使用

16.1 API基础

Base URLhttp://localhost:8000/api/

认证方式

方式说明
Session认证登录后自动携带Cookie
Basic认证HTTP Basic Auth

响应格式:JSON

分页:默认每页20条,通过 ?page=N 翻页

16.2 文章接口

获取文章列表

bashcurl http://localhost:8000/api/articles/

筛选参数

bash# 按分类
curl "http://localhost:8000/api/articles/?category=python"

# 按标签
curl "http://localhost:8000/api/articles/?tag=Django"

# 按作者
curl "http://localhost:8000/api/articles/?author=1"

# 搜索
curl "http://localhost:8000/api/articles/?search=Python"

# 仅推荐
curl "http://localhost:8000/api/articles/?featured=true"

获取文章详情

bashcurl http://localhost:8000/api/articles/<slug>/

创建文章(需认证)

bashcurl -X POST http://localhost:8000/api/articles/ \
  -H "Content-Type: application/json" \
  -u admin:password \
  -d '{
    "title": "新文章",
    "slug": "new-article",
    "content": "<p>文章内容</p>",
    "status": "published",
    "category": 1
  }'

浏览量递增

bashcurl -X POST http://localhost:8000/api/articles/<slug>/increment_view/

文章归档

bashcurl http://localhost:8000/api/articles/archive/

返回按年月分组的文章数量。

16.3 分类接口

bash# 列表
curl http://localhost:8000/api/categories/

# 仅顶级分类
curl "http://localhost:8000/api/categories/?parent=null"

# 详情
curl http://localhost:8000/api/categories/<slug>/

16.4 页面接口

bash# 列表
curl http://localhost:8000/api/pages/

# 详情
curl http://localhost:8000/api/pages/<slug>/

# 浏览量递增
curl -X POST http://localhost:8000/api/pages/<slug>/increment_view/

16.5 评论接口

bash# 获取评论列表
curl http://localhost:8000/api/comments/

# 创建评论(无需认证)
curl -X POST http://localhost:8000/api/comments/ \
  -H "Content-Type: application/json" \
  -d '{
    "article": 1,
    "author_name": "访客",
    "author_email": "visitor@example.com",
    "content": "很棒的文章!"
  }'
💡 通过API创建的评论默认为待审核状态。

16.6 站点统计

bashcurl http://localhost:8000/api/stats/

返回:

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

16.7 全局搜索

bashcurl "http://localhost:8000/api/search/?q=Python"

同时搜索文章和页面,返回合并结果。

16.8 媒体接口(仅管理员)

bash# 列表
curl -u admin:password http://localhost:8000/api/media/

# 上传
curl -X POST http://localhost:8000/api/media/ \
  -u admin:password \
  -F "title=测试图片" \
  -F "file=@/path/to/image.png" \
  -F "media_type=image"

16.9 站点设置接口(仅管理员)

bash# 读取
curl -u admin:password http://localhost:8000/api/settings/

# 修改
curl -X PATCH http://localhost:8000/api/settings/ \
  -u admin:password \
  -H "Content-Type: application/json" \
  -d '{"site_name": "新站点名称"}'

SEO优化

17.1 全局SEO

在站点设置中配置全局默认值:

  1. 进入站点设置 → SEO设置区域
  2. 填写默认SEO标题、描述、关键词
  3. 保存

17.2 单页SEO

每篇文章、页面、分类都可以独立配置SEO:

  1. 编辑内容时,展开「SEO设置」折叠区域
  2. 填写SEO标题、描述、关键词
  3. 单页SEO设置优先于全局默认值

SEO标题建议

SEO描述建议

17.3 URL优化

好的slug示例

不好的slug示例

17.4 站点地图

系统自动生成 sitemap.xml,包含:

访问地址:http://localhost:8000/sitemap.xml

提交到搜索引擎:

17.5 自定义Head/Footer代码

在站点设置的「分析与追踪」区域:

Google Analytics示例

html<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

百度统计示例

html<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?YOUR_ID";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();
</script>

常见问题

Q1:登录后跳转到了Django默认Admin,而不是自定义后台?

A:直接访问 http://localhost:8000/cms-admin/dashboard/ 即可进入自定义管理后台。系统默认登录跳转到 /cms-admin/dashboard/

Q2:前台导航栏没有显示新创建的页面?

A:请确认:

  1. 页面状态为「已发布」
  2. 页面「启用」已勾选
  3. 页面「设为首页」未勾选(首页不会出现在导航栏)

Q3:评论提交后在前台看不到?

A:评论默认需要审核。在后台「评论管理」中审核通过后才会显示。

Q4:如何修改站点名称和Logo?

A:进入侧边栏 → 系统 → 站点设置 → 基本信息 区域,修改站点名称和上传Logo。

Q5:文章编辑器中上传图片失败?

A:请确认:

  1. 已安装 Pillow:pip install Pillow
  2. media/ 目录有写入权限
  3. settings.py 中 CKEDITOR_UPLOAD_PATH 配置正确

Q6:如何批量发布文章?

A:在文章列表页:

  1. 勾选要发布的文章
  2. 在操作下拉框中选择「设为已发布」
  3. 点击「执行」

Q7:如何导出文章数据?

A:在文章列表页:

  1. 勾选要导出的文章
  2. 选择「导出选中文章(JSON)」或「导出选中文章(CSV)」
  3. 点击「执行」,浏览器会下载文件

Q8:联系表单提交后没有收到邮件?

A:请检查:

  1. 站点设置中的「通知邮箱」是否已填写
  2. SMTP配置是否正确(开发环境邮件输出到控制台)
  3. 生产环境需要配置真实的SMTP服务器

Q9:如何开启暗色模式?

A:进入站点设置 → 系统设置 → 勾选「启用暗色模式」→ 保存。

Q10:如何添加新的管理用户?

A

  1. 进入侧边栏 → 系统 → 用户管理
  2. 点击「增加用户」
  3. 填写用户名、密码
  4. 勾选「职员状态」(否则无法登录后台)
  5. 保存

Q11:前台搜索不到文章?

A:搜索范围仅限已发布且启用的文章。请确认文章状态为「已发布」且「启用」已勾选。

Q12:如何修改每页显示的文章数量?

A:进入站点设置 → 系统设置 → 修改「每页文章数」→ 保存。默认为10篇。

Q13:URL重定向不生效?

A:请确认:

  1. 重定向规则「启用」已勾选
  2. 原路径填写正确(需包含前后的 /
  3. /admin//api/ 等路径不会被重定向

Q14:如何删除站点设置重新配置?

A:站点设置为单例模式,不支持删除。直接修改保存即可覆盖。

Q15:数据库文件在哪里?

A:开发环境使用 SQLite,数据库文件位于项目根目录的 db.sqlite3