finds.dev← search

// the find

liangliangyy/DjangoBlog

★ 7,404 · Python · MIT · updated Jul 2026

🍺基于Django的博客系统

A full-featured personal blog platform built on Django 5.2 and Python 3.10+, targeting Chinese-speaking developers who want a self-hosted blog with batteries included. It ships with OAuth logins, full-text search (Whoosh or Elasticsearch), Redis caching, and a hook-based plugin system — all configured through Django's standard settings.

The plugin system is genuinely well-designed: hooks fire at named lifecycle points (after_article_body_get, etc.) so plugins stay completely decoupled from core code. The modern frontend stack (Alpine.js + HTMX + Tailwind, built with Vite) avoids the usual Django blog trap of shipping jQuery from 2015. Database migrations are clean and indexed properly — migration 0007 adds composite indexes on type/status/published and status/views, which shows someone actually thought about query patterns. Docker and Kubernetes deployment configs are included and look production-realistic, not the usual throw-everything-in-one-container tutorial setup.

MySQL-first is an odd choice in 2026 when PostgreSQL is the obvious pick for a Django project with full-text search needs — Whoosh is slow and Elasticsearch is operationally heavy, and neither would be needed if they'd used pg_trgm or pgvector. The settings.py is the single configuration point with no environment-based override pattern shown, so new users will hardcode credentials there and commit them. English documentation exists but feels like an afterthought — the README, docs, and most comments are Chinese, so non-Chinese contributors will hit walls quickly. The owntracks module (GPS location logging) has nothing to do with blogging and ships enabled by default with no explanation of why it exists.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →