- 🔐 用户认证 - 安全的注册登录系统,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 包管理器
cd PythonProject1python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activatepip install -r requirements.txt首先在 MySQL 中创建数据库:
mysql -u root -p < init_db.sql或者手动创建:
CREATE DATABASE bloghub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;复制环境变量示例文件并修改:
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-herepython main.py或使用 uvicorn:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload打开浏览器访问:http://localhost:8000
启动应用后,可以访问自动生成的 API 文档:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
| 方法 | 端点 | 描述 |
|---|---|---|
| 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" # 数据库名称SECRET_KEY = "your-secret-key" # JWT 密钥(生产环境请更换)
ALGORITHM = "HS256" # 加密算法
ACCESS_TOKEN_EXPIRE_MINUTES = 10080 # Token 有效期(分钟)- 生产环境部署前,请务必更换
SECRET_KEY - 密码使用 bcrypt 加密存储
- 使用 JWT Token 进行身份认证
- API 接口有适当的权限控制
- 遵循 PEP 8 Python 代码规范
- 使用 Type Hints 进行类型标注
- 模块化设计,便于维护和扩展
- 添加 Markdown 编辑器支持
- 实现用户关注功能
- 添加消息通知系统
- 添加文章收藏功能
MIT License
欢迎提交 Issue 和 Pull Request!
Made with ❤️ by BlogHub Team | © 2025