用 Golang 开发简易博客后台,核心是实现内容 CRUD、用户登录校验和路由控制;采用 net/http+html/template、SQLite、内存 session,按 handlers/models/templates 等分层组织,轻量可部署。

用 Golang 开发简易博客后台管理界面,核心不是堆功能,而是快速实现「内容增删改查 + 用户登录校验 + 基础路由控制」。不需要 前端 框架,纯 HTML + 少量 CSS + Go 的 html/template 就能跑起来,适合练手、内部工具或轻量个人博客。
1. 项目结构要清爽,按职责分层
避免把所有代码塞进 main.go。推荐这样组织:
- main.go:只负责初始化路由、启动服务
- handlers/:放所有 HTTP 处理函数(如 PostListHandler、LoginHandler)
- models/:定义结构体(Post、User)、数据库操作(用 database/sql 或 gorm)
- templates/:放 .html 模板文件(login.html、post_list.html、post_form.html)
- static/:放 css、js(可选,初期内联 style 也行)
2. 用 net/http + html/template 渲染页面
不用 React/Vue,Go 自带模板引擎够用。关键点:
- 在 handler 中解析模板:
t := template.Must(template.ParseFiles("templates/post_list.html")) - 传数据进模板:
t.Execute(w, map[string]interface{}{"Posts": posts, "Title": " 文章列表 "}) - 模板里用
{{.Title}}、{{range .Posts}}渲染,表单用{{.ID}}、{{.Title}}回填 - POST 提交后重定向(302)防重复提交:
http.Redirect(w, r, "/posts", http.StatusFound)
3. 登录与权限控制,用 session 最简实现
不接 OAuth,也不上 JWT,用标准库 net/http + 内存 map(开发用)或 Redis(上线用)存 session:
立即学习“go 语言免费学习笔记(深入)”;
- 用户登录成功后生成随机 session ID,存入 map:
sessions[sessionID] = userID - 设置 Cookie:
http.SetCookie(w, &http.Cookie{Name: "session_id", Value: sessionID, Path: "/", HttpOnly: true}) - 每个需鉴权的 handler 先读 Cookie,查 session 是否有效,无效则跳转登录页
- 退出时清空 session 并删除 Cookie
4. 数据库用 SQLite 起步,够快够轻
开发阶段完全没必要上 MySQL。SQLite 零配置、单文件、Go 原生支持:
- 导入:
import _ "github.com/mattn/go-sqlite3" - 打开:
db, _ := sql.Open("sqlite3", "./blog.db") - 建表 SQL 一行搞定:
CREATE TABLE posts (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP) - CRUD 全部用
db.QueryRow/db.Exec,无 ORM 依赖,逻辑一目了然
基本上就这些。不复杂但容易忽略的是:模板路径别写错、SQL 注入要预处理(用 ? 占位符)、登录态校验别漏掉中间件逻辑。跑通一遍,你就有了一个真正可运行、可部署、可扩展的 Go 后台骨架。