image

今天,我想和大家分享一个对我来说有点特殊的故事——关于一个我7年前写的 Django 博客项目,以及我最近是如何将它从“故纸堆”里翻出来,并用全新的技术栈让它重获新生的。

故事的开始:七年前的那个“小破站”

大概在 2017 年,我还是一个热衷于写代码的野生开发者。和很多技术爱好者一样,我也想拥有一个自己的博客,于是就有了这个项目的第一个版本。那时的它非常简单,基于当时还算流行的 Django 2.x,实现了最核心的文章增删改查。没有精致的前端,没有移动端适配,更别提现在张口就来的“容器化”了。

但它确确实实是我亲手搭建起来的、能运行的第一个完整的 Web 项目。

被“遗忘”的七年

后来的故事可能很多人都经历过。工作越来越忙,慢慢走上了管理岗位,手头的代码变成了无休止的产品研发和项目需求分析和设计。虽然离技术越来越近(管理着技术团队),但离“写”技术本身却越来越远。

这个小小的博客项目,也就在我的硬盘里静静地躺了七年。

重拾键盘:为什么是现在?

今年,我突然有了一种强烈的危机感,或者说是一种渴望。我意识到,作为一名技术出身的管理者,绝对不能完全脱离技术本身。我怀念那种从 0 到 1 构建东西的纯粹快乐,那种解决一个棘手 bug 后的成就感。

于是,我做了一个决定:是时候“复活”那个老朋友了。

这不仅仅是为了升级一个项目,更是为了重启我对编码的热情,同时也想将自己这几年来新学习的一些东西记录下来,通过博客逐步构建自己完整的技术体系,也是想检验自己是否还能跟上这个飞速发展的技术时代。

脱胎换骨:我都做了些什么?

作为非科班代码爱好者,我从没正儿八经写过生产级代码,这次更新我也只能把能我自己相对熟悉的、这几年流行且实用的技术都给它“安排”上:

  • 核心框架升级:从古老的 Django 2.x 一口气跃升到最新的 Django 5.x
  • 容器化改造:引入 DockerDocker Compose,实现了一键构建、部署和运行,告别了繁琐的环境配置。
  • 生产级部署:用 Gunicorn 替换了简陋的 runserver,并集成 WhiteNoise 来高效处理静态文件,让它具备了真正上生产环境的能力。
  • 前端体验优化:重新编写了后台登录页面,适配了移动端,让它在手机上也能优雅地使用。
  • 代码规范与修复:解决了这些年 Django 版本迭代带来的所有警告和问题,比如默认主键类型、中间件配置等。

整个过程就像一次“考古”,我踩了不少版本升级带来的坑,但每解决一个,都感觉自己与那个七年前的自己又近了一步。

写在最后

这个项目对我而言,更像是一个“时间胶囊”。它记录了我技术生涯的起点,也见证了我现在的回归。

我把它重新整理好并开源出来,一方面是想给自己的这段心路历程一个交代;另一方面,也希望能给正在学习 Django 和 Docker 的朋友们提供一个简单、完整、可以直接运行的实战参考。

如果你觉得这个故事或者这个项目对你有一点点触动或帮助,欢迎给个 Star ✨

项目地址在这:https://github.com/leeyis/jbt_blog

也欢迎大家随时提 Issue 或 PR,我们一起交流,一起进步。