hz4th_coder 8e3aeaf103 修复highlight.js模块加载冲突问题
- 使用完整的highlight.min.js包替代分散的语言包
- 解决'module is not defined'和变量重复声明错误
2026-06-04 23:20:59 +08:00
2026-06-04 23:12:34 +08:00
2026-06-04 23:12:34 +08:00
2026-06-04 23:12:34 +08:00
2026-06-04 23:12:34 +08:00
2026-06-04 23:12:34 +08:00
2026-06-04 23:12:34 +08:00

技术博客系统

一个基于 Flask 的技术文章展示和管理系统。

功能特性

  • 前端展示:文章列表、文章详情、分类筛选、标签筛选、热门文章
  • 后台管理:文章管理、分类管理、标签管理、仪表盘统计
  • 架构清晰:模型、服务、路由分层,便于维护扩展

项目结构

tech-blog/
├── app/                    # 应用核心代码
│   ├── __init__.py         # Flask应用工厂
│   ├── config.py           # 配置文件
│   ├── models/             # 数据模型
│   │   ├── article.py      # 文章模型
│   │   ├── category.py     # 分类模型
│   │   ├── tag.py          # 标签模型
│   │   └── admin.py        # 管理员模型
│   ├── routes/             # 路由控制器
│   │   ├── frontend.py     # 前端路由
│   │   └── admin.py        # 后台路由
│   ├── services/           # 业务服务层
│   │   ├── article_service.py
│   │   ├── category_service.py
│   │   ├── tag_service.py
│   │   └── admin_service.py
│   ├── templates/          # 模板文件
│   │   ├── frontend/       # 前端模板
│   │   └── admin/          # 后台模板
│   └── static/             # 静态资源
│       └── css/
├── migrations/             # 数据库迁移
├── data/                   # 数据库文件目录
├── tests/                  # 测试文件
├── requirements.txt        # 依赖清单
├── run.py                  # 启动脚本
├── .env                    # 环境变量
└── README.md

安装部署

1. 安装依赖

cd works/tech-blog
pip install -r requirements.txt
pip install python-slugify  # 额外的slug生成依赖

2. 初始化数据库

export FLASK_APP=run.py
flask init-db

3. 创建管理员账户

flask create-admin admin your_password

4. 启动服务

python run.py

服务将在端口 16012 上运行。

访问地址

使用说明

后台管理

  1. 使用创建的管理员账户登录后台
  2. 在分类管理中创建文章分类
  3. 在标签管理中创建标签
  4. 在文章管理中创建和发布文章

前端展示

  • 首页显示已发布的文章列表
  • 点击文章标题查看详情
  • 通过分类和标签筛选文章
  • 侧边栏显示热门文章和最新文章

技术栈

  • 后端Flask 3.0 + SQLAlchemy
  • 数据库SQLite可轻松切换到 PostgreSQL
  • 前端Jinja2 模板 + CSS
  • 部署:单端口 16012

扩展建议

  • 添加 Markdown 渲染支持
  • 添加评论功能
  • 添加搜索功能
  • 添加用户权限管理
  • 添加 API 接口
  • 切换到 PostgreSQL 数据库
Description
技术博客系统 - Flask + Markdown
Readme 314 KiB
Languages
HTML 45.2%
Python 41%
CSS 13.8%