Python 3.12Django 5.2SQLite / MySQL / PostgreSQLGunicorn 生产就绪

3600+代码总行数,10数据模型,20+功能特性,3数据库引擎

核心功能

从安装到运营,覆盖博客系统全生命周期

网页安装向导

4 步引导完成部署:选择数据库引擎 → 自动迁移 → 创建管理员 → 站点设置。非技术用户也能独立完成首次上线。

文章管理系统

支持发布/草稿/置顶、分类与标签、自定义摘要、封面图片、ProseMirror 富文本编辑器,中文 slug 自动生成。

评论与回复

楼层式评论系统,支持嵌套回复、管理员审核机制,已审核评论自动展示。

文件上传下载

分类管理、大小限制、后缀白名单、下载计数统计、公开/私有权限控制。

统计仪表盘

PV/UV 趋势图(Chart.js)、热门文章/页面 TOP10、文件下载排行、来源统计,仅管理员可见。

搜索与归档

标题+内容全文模糊搜索,按年月分组归档,分页浏览。

SEO & 社交分享

完整的搜索引擎优化和社交媒体分享支持

  • RSS 2.0 订阅源(最新 20 篇文章)

  • Sitemap.xml(文章/分类/标签/静态页)

  • robots.txt 动态生成

  • Open Graph 社交分享标签

  • Twitter Card 卡片预览

  • 中文 slug URL 支持

  • 社交分享按钮(微博/QQ/复制链接)

  • 面包屑导航层级指示

用户体验

注重细节的前端交互设计

深色 / 浅色主题

CSS 变量驱动,localStorage 持久化主题偏好,无闪烁切换,全站自适应。

文章目录 (TOC)

自动提取 h2/h3 标题生成目录树,sticky 定位跟随滚动,h3 层级缩进。

阅读时间估算

基于中文 500 字/分钟阅读速度,文章列表和详情页同步显示预估时长。

代码语法高亮

highlight.js CDN 集成,自动识别 190+ 编程语言,github-dark 深色主题。

回到顶部按钮

滚动超过 300px 后淡入显示,右下角固定定位,点击平滑滚动回页面顶部。

图片懒加载

原生 loading="lazy" 属性,浏览器级别的图片延迟加载,无需第三方 JS 库。

项目架构

清晰的双应用架构,职责分明

DjangoBlog/
├── config/ # 项目配置
│ ├── settings.py # 设置(数据库/日志/安全/国际化)
│ ├── urls.py # 根路由(admin/setup/sitemap/robots)
│ ├── wsgi.py # WSGI 入口
│ └── asgi.py # ASGI 入口
├── blog/ # 核心博客应用
│ ├── models.py # 10 个数据模型
│ ├── views.py # 视图(列表/详情/搜索/仪表盘/文件)
│ ├── admin.py # 后台管理(含 django-prose-editor 集成)
│ ├── middleware.py # 访问统计中间件
│ ├── feeds.py # RSS 订阅源
│ ├── sitemaps.py # Sitemap 定义
│ └── context_processors.py # 全局模板上下文
├── setup/ # 安装向导应用
│ ├── views.py # 4 步安装逻辑
│ └── middleware.py # 未安装重定向中间件
├── templates/ # 模板文件(13 个页面)
├── static/ # 静态资源(CSS/JS)
├── logs/ # 分级日志(access/app/error)
├── gunicorn.conf.py # 生产 WSGI 配置
└── deploy.sh # Linux 一键部署脚本

技术栈

现代、稳定、高性能的技术选型

Python

3.12

Django

5.2

SQLite

内置

MySQL

可选

PostgreSQL

可选

Gunicorn

WSGI

Chart.js

CDN

highlight.js

CDN

运维保障

分级日志 + 安全加固,生产环境可靠运行

分级日志

access.log(HTTP 请求)、app.log(应用警告)、error.log(严重错误)三文件分离,RotatingFileHandler 自动轮转,防止磁盘撑满。

安全特性

CSRF 全局保护、XSS 过滤、X-Frame-Options、Secure Cookie、Dashboard 权限隔离、评论审核机制、文件上传白名单校验。

一键部署

deploy.sh 自动化:安装依赖 → 收集静态文件 → 数据库迁移 → 创建日志目录 → 启动 Gunicorn,环境变量灵活配置。

快速开始

三种方式启动,适配不同场景

# 方式一:开发模式 $ python manage.py runserver 8000 # 访问 http://localhost:8000/setup/ 进入安装向导 # 方式二:生产部署(Linux) $ bash deploy.sh # 自动完成:pip install → collectstatic → migrate → gunicorn # 方式三:自定义 Gunicorn 参数 $ GUNICORN_BIND=0.0.0.0:9000 GUNICORN_WORKERS=4 \ gunicorn config.wsgi:application -c gunicorn.conf.py

环境变量配置

灵活的生产环境配置

Django 配置

DJANGO_DEBUG — 调试模式 (默认 True)
DJANGO_SECRET_KEY — 密钥 (生产必须替换)
DJANGO_ALLOWED_HOSTS — 允许域名

Gunicorn 配置

GUNICORN_BIND — 监听地址 (默认 0.0.0.0:8000)
GUNICORN_WORKERS — Worker 数 (默认 CPU×2+1)
GUNICORN_LOG_LEVEL — 日志级别