找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1538

积分

0

好友

193

主题
发表于 2025-12-25 07:52:52 | 查看: 27| 回复: 0

在系统性地学习了FastAPI框架的核心特性后,本教程将通过一个完整的项目,带你动手开发一个基于FastAPI的前后端一体化企业级知识库博客平台,实现学以致用。

先看看效果

首页文章页显示

图片

文章详情页

图片

后台登录系统:

图片图片

文章管理列表

图片

创建分类,管理分类页

图片

数据看板页

图片

评论管理页

图片

通知中心

图片

用户管理页面

图片

更多详细的功能,可在部署后亲自体验。

企业博客论坛平台

这是一个基于 FastAPI + MySQL + SQLAlchemy 构建的前后端一体化博客系统,专为企业内部知识分享与团队协作设计。

📁 项目结构

图片

project/
├── backend/                    # 后端代码
│   ├── main.py                # FastAPI应用入口 ✅
│   ├── api/                   # 接口层 (API Layer)
│   │   ├── auth.py           # 认证API ✅
│   │   ├── users.py          # 用户管理API ✅
│   │   ├── articles.py       # 文章管理API ✅
│   │   ├── categories.py     # 分类管理API ✅
│   │   ├── comments.py       # 评论管理API ✅
│   │   └── stats.py          # 统计API ✅
│   ├── services/             # 业务层 (Business Layer)
│   │   ├── auth_service.py   # 认证业务逻辑 ✅
│   │   ├── user_service.py   # 用户业务逻辑 ✅
│   │   ├── article_service.py # 文章业务逻辑 ✅
│   │   └── email_service.py  # 邮件服务 ✅
│   ├── models/               # 模型层 (Model Layer)
│   │   ├── base.py          # 基础模型 ✅
│   │   ├── user.py          # 用户模型 ✅
│   │   ├── article.py       # 文章模型 ✅
│   │   └── comment.py       # 评论模型 ✅
│   ├── schemas/              # 数据模式 (Schema Layer)
│   │   ├── user.py          # 用户模式 ✅
│   │   ├── article.py       # 文章模式 ✅
│   │   └── comment.py       # 评论模式 ✅
│   ├── utils/                # 工具层 (Utils Layer)
│   │   ├── database.py      # 数据库工具 ✅
│   │   ├── auth.py          # 认证工具 ✅
│   │   ├── document_utils.py # 文档处理工具 ✅
│   │   └── spam_filter.py   # 垃圾过滤工具 ✅
│   └── core/                 # 核心配置 (Core Layer)
│       ├── config.py        # 应用配置 ✅
│       └── dependencies.py  # 依赖注入 ✅
├── frontend/                 # 前端代码
│   ├── templates/           # HTML模板 ✅
│   └── static/             # 静态资源 ✅
│       └── css/           # CSS文件 ✅
├── uploads/                # 上传文件 ✅
└── run_server.py          # 启动脚本 ✅

✨ 功能特性

核心功能

  • 🔐 权限管理: 管理员/后端用户/访客三级权限体系
  • ✍️ 文章管理: 支持Markdown格式,发布/编辑/删除文章
  • 📖 内容浏览: 现代化UI,响应式设计,优秀的阅读体验
  • 💬 互动功能: 评论、点赞、阅读统计
  • 🎨 美观界面: TailwindCSS设计,现代化UI风格

技术特性

  • ⚡ FastAPI高性能异步框架
  • 🔒 JWT身份认证
  • 📝 Markdown内容渲染
  • 🗄️ SQLAlchemy ORM
  • 📊 RESTful API设计
  • 📱 响应式布局

🚀 快速开始

方式一:使用启动脚本(推荐 - Windows)

  1. 创建数据库
    CREATE DATABASE blog_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 配置环境编辑 .env 文件,修改数据库密码:
    DATABASE_URL=mysql+pymysql://root:你的密码@localhost:3306/blog_db
  3. 运行启动脚本
    start.bat & python run_server.py

方式二:手动启动

  1. 安装依赖
    pip install -r requirements.txt
  2. 创建数据库
    # 使用SQL脚本
    mysql -u root -p < create_database.sql
    # 或手动创建
    mysql -u root -p
    CREATE DATABASE blog_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. 配置环境变量
    # 复制配置文件
    cp .env.example .env
    # 编辑 .env 文件,修改数据库连接信息
  4. 初始化数据库
    python init_db.py

    项目提供了SQL初始化脚本,可直接在数据库管理工具中执行。

  5. 启动服务
    uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000

访问系统

功能 地址 说明
前端首页 http://localhost:8000 浏览文章
文章详情 http://localhost:8000/article/{id} 查看文章详情
后台登录 http://localhost:8000/admin/login 管理员/用户登录
后台管理 http://localhost:8000/admin/dashboard 文章和用户管理
API文档 http://localhost:8000/docs Swagger交互式文档

默认账号

管理员账号

  • 用户名: admin
  • 密码: admin123

⚠️ 重要: 请妥善保管超级管理员密码!

📖 文档导航

文档 说明
快速开始 5分钟快速部署指南
配置指南 配置管理详细说明
用户指南 详细的功能使用说明
部署指南 生产环境部署文档
项目总览 架构设计和技术细节

⚙️ 配置管理

项目采用统一的配置管理方式,所有配置集中在 config.py 中:

主要配置项

# 数据库配置
DATABASE_URL=mysql+pymysql://root:password@localhost:3306/blog_db
DB_POOL_SIZE=5
DB_MAX_OVERFLOW=10
# JWT认证配置
SECRET_KEY=your-secret-key-change-this
ACCESS_TOKEN_EXPIRE_MINUTES=30
# 应用配置
DEBUG=False
HOST=0.0.0.0
PORT=8000

详细配置说明请查看 CONFIG_GUIDE.md

🎯 核心功能说明

管理员功能

  • 创建后端用户账号
  • 管理所有用户
  • 发布/编辑/删除任何文章
  • 查看系统统计
  • 下载文章

后端用户功能

  • 登录后台系统
  • 发布新文章(支持Markdown)
  • 编辑自己的文章
  • 删除自己的文章
  • 查看文章统计数据

前端访客功能

  • 浏览所有文章
  • 查看文章详情
  • 发表评论
  • 点赞文章
  • 无需登录即可访问

🔧 技术栈

后端

  • 框架: FastAPI
  • 数据库: MySQL 8.0+
  • ORM: SQLAlchemy 2.0
  • 认证: JWT (python-jose)
  • 密码加密: bcrypt

前端

  • UI框架: TailwindCSS 3.x
  • 图标: Font Awesome 6.4
  • Markdown渲染: marked.js
  • 模板引擎: Jinja2

📊 数据库设计

核心表结构

  • users (用户表)
    • 用户名、邮箱、密码
    • 管理员标识、激活状态
  • articles (文章表)
    • 标题、内容、作者
    • 阅读数、创建/更新时间
  • comments (评论表)
    • 评论内容、文章关联
    • 用户/访客信息
  • likes (点赞表)
    • 文章关联、IP地址
    • 防止重复点赞

🔒 安全特性

  • ✅ 密码bcrypt加密存储
  • ✅ JWT Token身份验证
  • ✅ 三级权限控制
  • ✅ SQL注入防护(ORM)
  • ✅ XSS攻击防护
  • ✅ IP限制点赞

🚀 生产环境部署

详细部署步骤请参考 DEPLOYMENT.md

快速部署要点

  1. 使用Nginx反向代理
  2. 配置HTTPS证书
  3. 使用Supervisor管理进程
  4. 配置数据库备份
  5. 启用日志监控

📝 API接口

完整API文档访问: http://localhost:8000/docs

主要接口

方法 路径 说明 权限
POST /api/auth/login 用户登录 公开
GET /api/articles 获取文章列表 公开
GET /api/articles/{id} 获取文章详情 公开
POST /api/articles 创建文章 需登录
PUT /api/articles/{id} 更新文章 需登录
DELETE /api/articles/{id} 删除文章 需登录
POST /api/articles/{id}/comments 发表评论 公开
POST /api/articles/{id}/like 点赞文章 公开
POST /api/users 创建用户 需管理员
GET /api/users 获取用户列表 需管理员

🛠️ 常见问题

数据库连接失败

检查MySQL服务是否启动,数据库配置是否正确。

端口被占用

修改启动命令中的端口号,如果不改,默认是8000:

python -m uvicorn backend.main:app --reload --host 0.0.0.0 --port 8001

依赖安装失败

使用国内镜像源:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

更多问题请查看 USER_GUIDE.md 的常见问题部分。

用户使用指南

系统概述

企业博客论坛平台是一个前后端一体化的知识分享系统,支持文章发布、浏览、评论和点赞功能。

角色说明

1. 超级管理员&管理员

  • 创建后端用户账号
  • 发布、编辑、删除,下载文章,管理所有内容
  • 管理所有用户和内容

2. 后端用户

  • 登录后台系统
  • 发布、编辑、删除自己的文章
  • 查看文章统计数据

3. 前端访客

  • 浏览所有已发布的文章
  • 查看文章详情
  • 评论文章
  • 点赞文章

功能使用

超级管理员操作

1. 首次登录

访问 http://localhost:8000/admin/login
默认账号:

  • 用户名: admin
  • 密码: admin123

重要:超级管理员密码请不要随意给出

2. 创建用户

  1. 登录后台管理系统
  2. 点击"用户管理"标签
  3. 填写用户信息:
    • 用户名(必填)
    • 邮箱(可选)
    • 密码(必填)
    • 是否为管理员(勾选框)
  4. 点击"创建用户"按钮

3. 查看用户列表

在"用户管理"标签下可以看到:

  • 所有用户列表
  • 用户角色(管理员/普通用户)
  • 注册时间

后端用户操作

1. 登录系统

访问 http://localhost:8000/admin/login,使用管理员分配的账号密码登录。

2. 发布文章

  1. 登录后台管理系统
  2. 在"文章管理"标签下
  3. 填写文章标题和内容
  4. 内容支持Markdown格式:
    # 一级标题
    ## 二级标题
    **粗体文字**
    *斜体文字*
    - 列表项1
    - 列表项2
    ```代码块```
    > 引用文字
  5. 点击"发布文章"按钮

3. 编辑文章

  1. 在"我的文章"列表中找到要编辑的文章
  2. 点击"编辑"按钮
  3. 修改标题或内容
  4. 点击"更新文章"按钮

4. 删除文章

  1. 在"我的文章"列表中找到要删除的文章
  2. 点击"删除"按钮
  3. 确认删除操作

5. 查看文章统计

在文章列表中可以看到:

  • 阅读数(浏览次数)
  • 点赞数
  • 评论数

前端访客操作

1. 浏览文章

访问 http://localhost:8000,可以看到所有已发布的文章列表。
每篇文章显示:

  • 文章标题
  • 作者名称
  • 发布时间
  • 内容摘要
  • 阅读数、点赞数、评论数

2. 阅读文章

点击文章标题或"阅读全文"按钮,进入文章详情页。
文章详情页显示:

  • 完整的文章内容(Markdown渲染)
  • 作者信息
  • 发布时间
  • 统计数据

3. 点赞文章

在文章详情页,点击红色的爱心图标即可点赞。
注意:

  • 每个IP地址只能点赞一次
  • 点赞后会实时更新点赞数

4. 评论文章

在文章详情页底部:

  1. 输入您的昵称(可选,默认为"访客")
  2. 输入评论内容
  3. 点击"发表评论"按钮
    评论会立即显示在评论列表中。

Markdown语法快速参考

标题

# 一级标题
## 二级标题
### 三级标题

文字样式

**粗体**
*斜体*
~~删除线~~
`代码`

列表

- 无序列表项1
- 无序列表项2
1. 有序列表项1
2. 有序列表项2

链接和图片

[链接文字](https://example.com)
![图片描述](https://static1.yunpan.plus/attachment/0af0a46f6fefdfd6.jpg)

引用

> 这是一段引用文字

代码块

<pre>

def hello():
    print("Hello World")

</pre>

表格

| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 内容1 | 内容2 | 内容3 |

常见问题

Q: 忘记密码怎么办?

A: 请联系超级管理员重置密码。超级管理员可以通过后台直接修改新密码。

Q: 文章可以插入图片吗?

A: 可以,使用Markdown语法插入图片链接。建议先将图片上传到图床服务,或者直接使用富文本编写,支持在线粘贴图片。

Q: 可以删除别人的评论吗?

A: 目前系统只有超级管理员支持删除别人评论功能。

Q: 文章内容有字数限制吗?

A: 没有硬性限制,但建议单篇文章不超过10000字,以保证阅读体验。

Q: 可以导出文章吗?

A: 可以通过API接口获取文章内容,管理员和超级管理员可以登录后台下载,或直接从数据库导出。

Q: 支持文章分类和标签吗?

A: 支持。

技术支持

如遇到问题,请:

  1. 查看系统日志
  2. 检查网络连接
  3. 联系系统管理员

API文档地址:http://localhost:8000/docs

📄 许可证

本项目仅供企业内部使用。

版本: v1.0.0
最后更新: 2025-11-24




上一篇:FinClip实践:小程序一键转iOS、Android与鸿蒙原生App
下一篇:Linux内核TCP Auto Corking机制详解:原理、性能测试与内核实现
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 18:36 , Processed in 0.215493 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表