Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ljmict/DjangoBlog

Open more actions menu
 
 

Repository files navigation

DjangoBlog

Django CI Frontend CI CodeQL license

一款功能强大、设计优雅的现代化博客系统
English简体中文


DjangoBlog 是一款基于 Python 3.10+ 和 Django 5.2 构建的高性能博客平台。它不仅提供了传统博客的所有核心功能,还通过一个灵活的插件系统,让您可以轻松扩展和定制您的网站。无论您是个人博主、技术爱好者还是内容创作者,DjangoBlog 都旨在为您提供一个稳定、高效且易于维护的写作和发布环境。

✨ 特性亮点

  • 强大的内容管理: 支持文章、独立页面、分类和标签的完整管理。内置强大的 Markdown 编辑器,支持代码语法高亮。
  • 全文搜索: 集成 Elasticsearch/Whoosh 搜索引擎,提供快速、精准的文章内容搜索,支持关键词高亮显示。
  • 互动评论系统: 支持回复、邮件提醒等功能,评论内容同样支持 Markdown。现代化评论界面,支持无限嵌套回复。
  • 灵活的侧边栏: 可自定义展示最新文章、最多阅读、标签云等模块。
  • 社交化登录: 内置 OAuth 支持,已集成 Google, GitHub, Facebook, 微博, QQ 等主流平台。
  • 黑夜模式: 支持浅色/深色主题自动切换,可跟随系统设置,提供舒适的阅读体验。
  • 现代化前端: 基于 Alpine.js + Tailwind CSS + HTMX 构建,提供 SPA 般的无刷新浏览体验,支持 HTML-over-the-wire 架构。
  • 高性能缓存: 原生支持 Redis 缓存,并提供自动刷新机制,确保网站高速响应。
  • SEO 友好: 具备基础 SEO 功能,新内容发布后可自动通知 Google 和百度。
  • 便捷的插件系统: 通过创建独立的插件来扩展博客功能,代码解耦,易于维护。已内置 9 个实用插件,包括浏览计数、SEO 优化、文章推荐、图片懒加载等功能!
  • 集成图床: 内置简单的图床功能,方便图片上传和管理。
  • 自动化构建: 使用 Vite 构建前端资源,支持热更新和自动压缩优化。
  • 健壮的运维: 内置网站异常邮件提醒和微信公众号管理功能。

🛠️ 技术栈

  • 后端: Python 3.10+, Django 5.2
  • 数据库: MySQL, SQLite (可配置)
  • 缓存: Redis, LocalMem (可配置)
  • 前端: Alpine.js 3.13, Tailwind CSS 3.4, HTMX 1.9, Vite 5.4
  • 搜索: Whoosh, Elasticsearch (可配置)
  • 编辑器: Markdown (mdeditor)

🚀 快速开始

1. 环境准备

确保您的系统中已安装 Python 3.10+ 和 MySQL/MariaDB。

2. 克隆与安装

# 克隆项目到本地
git clone https://github.com/liangliangyy/DjangoBlog.git
cd DjangoBlog

# 安装依赖
pip install -r requirements.txt

3. 项目配置

  • 数据库: 打开 djangoblog/settings.py 文件,找到 DATABASES 配置项,修改为您的 MySQL 连接信息。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'djangoblog',
            'USER': 'root',
            'PASSWORD': 'your_password',
            'HOST': '127.0.0.1',
            'PORT': 3306,
        }
    }

    在 MySQL 中创建数据库:

    CREATE DATABASE `djangoblog` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 更多配置: 关于邮件发送、OAuth 登录、缓存等更多高级配置,请参阅我们的 详细配置文档

4. 初始化数据库

python manage.py makemigrations
python manage.py migrate

# 创建一个超级管理员账户
python manage.py createsuperuser

5. 构建前端资源

# 进入前端目录
cd frontend

# 安装依赖(首次运行需要)
npm install

# 构建生产环境资源
npm run build

# 返回项目根目录
cd ..

6. 运行项目

# (可选) 生成一些测试数据
python manage.py create_testdata

# 收集静态文件
python manage.py collectstatic --noinput

# (可选) 压缩静态文件
python manage.py compress --force

# 启动开发服务器
python manage.py runserver

现在,在您的浏览器中访问 http://127.0.0.1:8000/,您应该能看到 DjangoBlog 的首页了!

开发模式

如果您需要开发前端代码,可以使用 Vite 的热更新功能:

# 在 frontend 目录下启动开发服务器
cd frontend
npm run dev

这将启动 Vite 开发服务器,修改前端代码后会自动重新构建。

部署

🧩 插件系统

插件系统是 DjangoBlog 的核心特色之一。它允许您在不修改核心代码的情况下,通过编写独立的插件来为您的博客添加新功能。

  • 工作原理: 插件通过在预定义的"钩子"上注册回调函数来工作。例如,当一篇文章被渲染时,after_article_body_get 钩子会被触发,所有注册到此钩子的函数都会被执行。

  • 现有插件: 项目已内置以下实用插件

    • view_count - 文章浏览计数统计
    • seo_optimizer - SEO 优化增强
    • article_copyright - 文章版权声明(现代化样式)
    • article_recommendation - 智能文章推荐(响应式卡片布局)
    • external_links - 外部链接处理(自动添加图标)
    • image_lazy_loading - 图片懒加载优化(淡入动画)
    • reading_time - 文章阅读时间估算
    • cloudflare_cache - Cloudflare 缓存管理
  • 开发您自己的插件: 只需在 plugins 目录下创建一个新的文件夹,并编写您的 plugin.py。欢迎探索并为 DjangoBlog 社区贡献您的创意!

🤝 贡献指南

我们热烈欢迎任何形式的贡献!如果您有好的想法或发现了 Bug,请随时提交 Issue 或 Pull Request。

📄 许可证

本项目基于 MIT License 开源。


❤️ 支持与赞助

如果您觉得这个项目对您有帮助,并且希望支持我继续维护和开发新功能,欢迎请我喝杯咖啡!您的每一份支持都是我前进的最大动力。

支付宝赞助 微信赞助

(左) 支付宝 / (右) 微信

🙏 鸣谢

特别感谢 JetBrains 为本项目提供的免费开源许可证。

JetBrains Logo


如果本项目帮助到了你,请在这里留下你的网址,让更多的人看到。您的回复将会是我继续更新维护下去的动力。

About

🍺基于Django的博客系统

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 75.7%
  • HTML 23.8%
  • Other 0.5%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.