【置顶】DjangoBlog部署教程


本篇文章将会手把手教你如何部署DjangoBlog项目,首先介绍下我这里的基本环境,请大家仔细阅读此部分,下面的教程都会使用这些约定来介绍:

  • 系统是ubuntu 18.04 LTS
  • 假设你的域名是www.djangoblog.com
  • python虚拟环境目录在 ~/python/env
  • djangoblog源码位置在 ~/python/djangoblog
  • 登入用户server
  • 编辑器使用vim,你可以使用你喜欢的编辑器。

另外请注意,尽量不要使用root用户来部署,如果要使用root用户的话,需要使collectedstatic目录所有用户都有读权限。

准备工作

升级系统

...

Read more

DjangoBlog 深色模式与主题切换实现方案


前言

在现代 Web 应用中,深色模式已经成为了标配功能。一个优秀的深色模式实现不仅要提供良好的视觉体验,还需要解决页面闪烁、状态持久化、系统主题跟随等技术难题。本文将深入剖析 DjangoBlog 项目的深色模式实现方案,展示如何打造一个无闪烁、高性能、用户体验优秀的主题切换系统。

整体架构

DjangoBlog 采用了前端主导、后端辅助的架构设计,主题切换完全在前端实现,后端只负责配色方案的配置。整个系统可以分为三个层次:

  1. 前端逻辑层:使用 Alpine.js + 原生 JavaScript 实现主题切换核心逻辑
  2. 样式层:基于 Tailwind CSS + CSS 变量实现响应式主...

Read more

DjangoBlog插件开发指南(四):复杂插件实战案例


前言

前三篇我们学习了插件的理论知识,今天我们将通过两个真实的复杂插件案例,学习如何设计和实现生产级别的插件。

本文核心内容: - SEO 优化插件完整剖析 - 智能推荐插件设计与实现 - 性能优化技巧 - 开发最佳实践


一、案例一:SEO 优化插件

1.1 功能需求分析

核心功能: - 根据页面类型动态生成 SEO meta 标签 - 生成 Open Graph 标签(社交分享优化) - 生成 JSON-LD 结构化数据(搜索引擎优化) - 支持文章、分类、首页等多种页面类型

技术要点: - 路由感知与上下文分发 - Schema.org 结构化数据标准 - Open Graph P...

Read more

DjangoBlog插件开发指南(三):BasePlugin 与位置渲染系统


前言

前两篇我们理解了插件的工作原理和钩子系统。今天我们将学习 BasePlugin 基类——它为所有插件提供了丰富的能力,包括位置渲染、模板系统、静态资源管理等。

本文核心内容: - BasePlugin 基类的完整能力 - 位置渲染系统详解 - 模板与静态资源管理 - 完整插件开发示例


一、BasePlugin 基类概览

1.1 基类的设计目的

BasePlugin 是所有插件的父类,它封装了插件开发中最常用的功能。通过继承这个基类,插件开发者可以专注于业务逻辑的实现,而不需要关心底层的技术细节。

这个基类主要提供了四大能力:

元数据管理:统一管理插件的基本信息,如名称、版本、作者...

Read more

DjangoBlog插件开发指南(二):插件系统架构深度解析


前言

在第一篇中,我们通过 ViewCountPlugin 了解了插件的基本构成。今天我们将深入插件系统的底层,理解它是如何工作的。

本文核心内容: - 插件系统的整体架构设计 - 插件加载器的实现原理 - 钩子系统的设计与实现 - 实战:追踪一次完整的钩子调用


一、插件系统架构概览

1.1 四大核心模块

djangoblog/plugin_manage/
├── loader.py          # 插件加载器:扫描、加载、初始化插件
├── hooks.py           # 钩子系统:管理钩子注册与触发
├── hook_constants.py  # 钩子常量:统一管...

Read more

DjangoBlog插件开发指南(一):深入理解插件核心机制


在设计 DjangoBlog 之初,可扩展性是我重点考虑的特性之一。我希望能有一个优雅的机制,让开发者可以在不修改项目核心代码的情况下,自由地为其增添功能。最终,我借鉴了 WordPress 成熟的钩子(Hooks)系统,构建了 DjangoBlog 的插件体系。

这套体系的核心思想是“事件驱动”和“关注点分离”。系统在执行流程的关键节点触发“钩子(事件)”,而插件则可以“监听”这些钩子,并将自己的逻辑挂载上去。

本系列文章将带你全面了解 DjangoBlog 的插件开发。今天,我们先从分析一个内置的简单插件——文章浏览次数统计(ViewCountPlugin)——开始,来理解插件系统的...

Read more