Skip to content

matou03/BlogHub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BlogHub - 现代博客平台

BlogHub Logo

一个基于 FastAPI + MySQL 的现代化博客系统

Python FastAPI MySQL

✨ 功能特性

  • 🔐 用户认证 - 安全的注册登录系统,JWT Token 认证
  • 📝 博客管理 - 发布、编辑、删除文章,支持草稿功能
  • 🏷️ 标签系统 - 为文章添加标签,支持标签筛选
  • 🖼️ 封面上传 - 支持文章封面图片上传
  • 💬 评论系统 - 支持多级嵌套回复
  • ❤️ 点赞功能 - 为喜欢的文章点赞
  • 🔍 搜索功能 - 快速搜索文章
  • 👤 个人主页 - 查看用户资料和文章列表
  • 📱 响应式设计 - 完美适配移动端和桌面端

🛠️ 技术栈

分类 技术
后端框架 FastAPI
数据库 MySQL 8.0
ORM SQLAlchemy
认证 JWT (python-jose)
密码加密 bcrypt
模板引擎 Jinja2
前端 HTML5 + TailwindCSS + JavaScript
UI设计 Gemini 风格现代简约设计

📁 项目结构

PythonProject1/
├── app/
│   ├── __init__.py
│   ├── config.py          # 配置文件
│   ├── database.py        # 数据库连接
│   ├── models.py          # 数据模型
│   ├── schemas.py         # Pydantic 模式
│   ├── auth.py            # 认证模块
│   ├── routers/           # API 路由
│   │   ├── __init__.py
│   │   ├── users.py       # 用户 API
│   │   ├── blogs.py       # 博客 API
│   │   ├── comments.py    # 评论 API
│   │   ├── likes.py       # 点赞 API
│   │   ├── tags.py        # 标签 API
│   │   ├── upload.py      # 文件上传 API
│   │   └── pages.py       # 页面路由
│   ├── templates/         # HTML 模板
│   │   ├── base.html
│   │   ├── index.html
│   │   ├── login.html
│   │   ├── register.html
│   │   ├── blog_detail.html
│   │   ├── blog_editor.html
│   │   ├── my_blogs.html
│   │   ├── profile.html
│   │   └── user_profile.html
│   └── static/            # 静态文件
│       ├── css/
│       │   └── style.css
│       ├── js/
│       │   └── main.js
│       └── images/
├── main.py                # 应用入口
├── requirements.txt       # Python 依赖
├── init_db.sql           # 数据库初始化脚本
├── .env.example          # 环境变量示例
└── README.md             # 项目文档

🚀 快速开始

环境要求

  • Python 3.9+
  • MySQL 8.0+
  • pip 包管理器

1. 克隆项目

cd PythonProject1

2. 创建虚拟环境

python -m venv .venv

# Windows
.venv\Scripts\activate

# Linux/macOS
source .venv/bin/activate

3. 安装依赖

pip install -r requirements.txt

4. 配置数据库

首先在 MySQL 中创建数据库:

mysql -u root -p < init_db.sql

或者手动创建:

CREATE DATABASE bloghub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

5. 配置环境变量

复制环境变量示例文件并修改:

cp .env.example .env

编辑 .env 文件,配置数据库连接信息:

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=bloghub
SECRET_KEY=your-secret-key-here

6. 启动应用

python main.py

或使用 uvicorn:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

7. 访问应用

打开浏览器访问:http://localhost:8000

📖 API 文档

启动应用后,可以访问自动生成的 API 文档:

主要 API 端点

方法 端点 描述
POST /api/users/register 用户注册
POST /api/users/login 用户登录
GET /api/users/me 获取当前用户信息
PUT /api/users/me 更新用户信息
GET /api/blogs 获取博客列表
POST /api/blogs 创建博客
GET /api/blogs/{id} 获取博客详情
PUT /api/blogs/{id} 更新博客
DELETE /api/blogs/{id} 删除博客
POST /api/comments/blog/{id} 发表评论
GET /api/comments/blog/{id} 获取评论列表
POST /api/likes/blog/{id} 点赞/取消点赞
GET /api/tags 获取标签列表
POST /api/tags 创建标签
POST /api/upload/cover 上传封面图片

🎨 功能截图

首页

  • 精美的渐变色 Hero 区域
  • 响应式博客卡片网格
  • 实时搜索功能

文章详情

  • 清晰的排版布局
  • 点赞与评论互动
  • 嵌套评论回复

用户中心

  • 个人资料管理
  • 文章管理列表
  • 发布/草稿状态切换

⚙️ 配置说明

数据库配置

app/config.py.env 文件中配置:

MYSQL_HOST = "localhost"      # 数据库主机
MYSQL_PORT = 3306             # 数据库端口
MYSQL_USER = "root"           # 数据库用户名
MYSQL_PASSWORD = "123456"     # 数据库密码
MYSQL_DATABASE = "bloghub"    # 数据库名称

JWT 配置

SECRET_KEY = "your-secret-key"           # JWT 密钥(生产环境请更换)
ALGORITHM = "HS256"                       # 加密算法
ACCESS_TOKEN_EXPIRE_MINUTES = 10080       # Token 有效期(分钟)

🔒 安全说明

  1. 生产环境部署前,请务必更换 SECRET_KEY
  2. 密码使用 bcrypt 加密存储
  3. 使用 JWT Token 进行身份认证
  4. API 接口有适当的权限控制

📝 开发说明

代码规范

  • 遵循 PEP 8 Python 代码规范
  • 使用 Type Hints 进行类型标注
  • 模块化设计,便于维护和扩展

扩展建议

  • 添加 Markdown 编辑器支持
  • 实现用户关注功能
  • 添加消息通知系统
  • 添加文章收藏功能

📄 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!


Made with ❤️ by BlogHub Team | © 2025

About

一个简单的个博客,基于Python+FastAPI+MySQL+三剑客开发

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors