|
|
# Django音乐平台(项目文件位于src文件夹中)
|
|
|
|
|
|
一个基于Django框架开发的完整在线音乐播放系统,提供音乐播放、用户管理、评论互动、搜索推荐等完整功能。
|
|
|
|
|
|
## 🎵 功能特性
|
|
|
|
|
|
- 🎶 **在线音乐播放** - 支持MP3格式音频播放
|
|
|
- 👥 **用户管理系统** - 注册、登录、个人中心
|
|
|
- 💬 **互动评论系统** - 歌曲评论和社交互动
|
|
|
- 🔍 **智能搜索** - 按歌曲名、歌手名搜索
|
|
|
- 📊 **音乐排行榜** - 热门搜索、播放、下载排行
|
|
|
- 📱 **响应式设计** - 支持PC和移动端访问
|
|
|
- 🎨 **美观界面** - 现代化的音乐主题设计
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
- Python 3.7+
|
|
|
- Django 2.2.5+
|
|
|
- MySQL 5.7+ 或 SQLite3
|
|
|
|
|
|
### 安装步骤
|
|
|
|
|
|
1. **克隆项目**
|
|
|
```bash
|
|
|
git clone <项目地址>
|
|
|
cd text/src
|
|
|
```
|
|
|
|
|
|
2. **创建虚拟环境**
|
|
|
```bash
|
|
|
python -m venv .venv
|
|
|
|
|
|
# Windows 激活
|
|
|
.venv\Scripts\activate
|
|
|
|
|
|
# Linux/Mac 激活
|
|
|
source .venv/bin/activate
|
|
|
```
|
|
|
|
|
|
3. **安装依赖**
|
|
|
```bash
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
4. **数据库配置**
|
|
|
|
|
|
**选项A: 使用SQLite (推荐开发)**
|
|
|
```python
|
|
|
# settings.py 中配置
|
|
|
DATABASES = {
|
|
|
'default': {
|
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
|
|
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**选项B: 使用MySQL**
|
|
|
```python
|
|
|
DATABASES = {
|
|
|
'default': {
|
|
|
'ENGINE': 'django.db.backends.mysql',
|
|
|
'NAME': 'music',
|
|
|
'USER': 'root',
|
|
|
'PASSWORD': 'your_password',
|
|
|
'HOST': '127.0.0.1',
|
|
|
'PORT': '3306',
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
5. **数据库初始化**
|
|
|
```bash
|
|
|
# 创建数据库表
|
|
|
python manage.py makemigrations
|
|
|
python manage.py migrate
|
|
|
|
|
|
# 创建管理员账号
|
|
|
python manage.py createsuperuser
|
|
|
```
|
|
|
|
|
|
6. **导入音乐数据**
|
|
|
```bash
|
|
|
# 自动导入本地音乐文件
|
|
|
python create_music_data.py
|
|
|
```
|
|
|
|
|
|
7. **启动服务**
|
|
|
```bash
|
|
|
python manage.py runserver
|
|
|
```
|
|
|
|
|
|
访问 http://127.0.0.1:8000 开始使用!
|
|
|
|
|
|
## 📁 项目结构
|
|
|
|
|
|
```
|
|
|
music_project/
|
|
|
├── index/ # 首页应用 - 核心功能
|
|
|
├── user/ # 用户管理应用
|
|
|
├── play/ # 音乐播放应用
|
|
|
├── comment/ # 评论系统应用
|
|
|
├── search/ # 搜索功能应用
|
|
|
├── ranking/ # 排行榜应用
|
|
|
├── static/ # 静态文件
|
|
|
│ ├── songFile/ # 音乐文件
|
|
|
│ ├── songImg/ # 专辑封面
|
|
|
│ └── songLyric/ # 歌词文件
|
|
|
├── templates/ # HTML模板
|
|
|
└── music/ # 项目配置
|
|
|
```
|
|
|
|
|
|
## 🎯 核心功能
|
|
|
|
|
|
### 用户系统
|
|
|
- **用户注册** - 支持用户名、手机号注册
|
|
|
- **用户登录** - 多种方式登录验证
|
|
|
- **个人中心** - 播放历史、个人信息管理
|
|
|
|
|
|
### 音乐播放
|
|
|
- **在线播放** - 流畅的音乐播放体验
|
|
|
- **播放列表** - 自动记录播放历史
|
|
|
- **歌词显示** - 同步歌词展示
|
|
|
- **歌曲下载** - 支持音乐文件下载
|
|
|
|
|
|
### 社交功能
|
|
|
- **评论互动** - 对歌曲发表评论
|
|
|
- **热门排行** - 多种维度排行榜
|
|
|
- **搜索推荐** - 智能搜索和推荐
|
|
|
|
|
|
## 🔧 配置说明
|
|
|
|
|
|
### 数据库配置
|
|
|
支持MySQL和SQLite数据库,在`settings.py`中配置:
|
|
|
|
|
|
```python
|
|
|
DATABASES = {
|
|
|
'default': {
|
|
|
'ENGINE': 'django.db.backends.mysql', # 或 'sqlite3'
|
|
|
'NAME': 'music',
|
|
|
'USER': 'root',
|
|
|
'PASSWORD': 'password',
|
|
|
'HOST': 'localhost',
|
|
|
'PORT': '3306',
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### 静态文件配置
|
|
|
```python
|
|
|
STATIC_URL = '/static/'
|
|
|
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
|
|
|
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
|
|
|
```
|
|
|
|
|
|
### 自定义用户模型
|
|
|
```python
|
|
|
AUTH_USER_MODEL = 'user.MyUser'
|
|
|
```
|
|
|
|
|
|
## 🧪 测试说明
|
|
|
|
|
|
### 运行测试
|
|
|
|
|
|
```bash
|
|
|
# 运行所有测试
|
|
|
python manage.py test
|
|
|
|
|
|
# 运行特定应用测试
|
|
|
python manage.py test index
|
|
|
python manage.py test user
|
|
|
|
|
|
# 生成测试覆盖率报告
|
|
|
coverage run manage.py test
|
|
|
coverage report
|
|
|
coverage html
|
|
|
```
|
|
|
|
|
|
### 测试类型
|
|
|
|
|
|
- **单元测试** - 模型、表单、视图测试
|
|
|
- **集成测试** - 用户流程、数据库集成测试
|
|
|
- **性能测试** - 批量操作、查询性能测试
|
|
|
|
|
|
### 测试数据
|
|
|
测试使用独立数据库,不会影响生产数据。测试数据在`setUp`方法中自动创建和清理。
|
|
|
|
|
|
## 📊 API接口
|
|
|
|
|
|
### 歌曲相关接口
|
|
|
```
|
|
|
GET /api/songs/ # 歌曲列表
|
|
|
GET /api/songs/{id}/ # 歌曲详情
|
|
|
POST /api/songs/{id}/play # 播放歌曲
|
|
|
```
|
|
|
|
|
|
### 用户相关接口
|
|
|
```
|
|
|
POST /api/users/register # 用户注册
|
|
|
POST /api/users/login # 用户登录
|
|
|
GET /api/users/profile # 用户信息
|
|
|
```
|
|
|
|
|
|
### 评论相关接口
|
|
|
```
|
|
|
GET /api/comments/song/{song_id} # 歌曲评论
|
|
|
POST /api/comments/ # 发表评论
|
|
|
```
|
|
|
|
|
|
## 🐛 故障排除
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
1. **数据库连接错误**
|
|
|
```bash
|
|
|
# 检查MySQL服务
|
|
|
net start mysql
|
|
|
|
|
|
# 验证数据库配置
|
|
|
python manage.py check
|
|
|
```
|
|
|
|
|
|
2. **静态文件无法访问**
|
|
|
```python
|
|
|
# 检查static配置
|
|
|
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
|
|
|
```
|
|
|
|
|
|
3. **音乐文件无法播放**
|
|
|
- 检查文件路径是否正确
|
|
|
- 验证文件格式(支持MP3)
|
|
|
- 检查文件权限
|
|
|
|
|
|
4. **用户登录问题**
|
|
|
- 检查用户是否激活
|
|
|
- 验证密码是否正确
|
|
|
- 检查Session配置
|
|
|
|
|
|
### 日志查看
|
|
|
```bash
|
|
|
# 查看应用日志
|
|
|
tail -f logs/music.log
|
|
|
|
|
|
# Django调试信息
|
|
|
python manage.py runserver --verbosity 2
|
|
|
```
|
|
|
|
|
|
## 📈 性能优化
|
|
|
|
|
|
### 数据库优化
|
|
|
- 使用`select_related`减少查询次数
|
|
|
- 添加适当的数据库索引
|
|
|
- 使用分页限制数据量
|
|
|
|
|
|
### 缓存策略
|
|
|
- 使用Redis缓存热点数据
|
|
|
- 静态文件CDN加速
|
|
|
- 数据库查询缓存
|
|
|
|
|
|
## 🔒 安全配置
|
|
|
|
|
|
### 安全措施
|
|
|
- 用户密码加密存储
|
|
|
- CSRF保护机制
|
|
|
- XSS攻击防护
|
|
|
- SQL注入防护
|
|
|
|
|
|
### 安全建议
|
|
|
- 定期更新依赖包
|
|
|
- 使用HTTPS协议
|
|
|
- 设置强密码策略
|
|
|
- 定期安全审计
|
|
|
|
|
|
## 🚀 部署指南
|
|
|
|
|
|
### 生产环境部署
|
|
|
1. 配置生产环境设置
|
|
|
2. 设置DEBUG=False
|
|
|
3. 配置数据库连接
|
|
|
4. 收集静态文件
|
|
|
5. 配置Web服务器
|
|
|
|
|
|
### 使用uWSGI部署
|
|
|
```bash
|
|
|
# 安装uWSGI
|
|
|
pip install uwsgi
|
|
|
|
|
|
# 启动服务
|
|
|
uwsgi --ini uwsgi.ini
|
|
|
```
|
|
|
|
|
|
### 使用Docker部署
|
|
|
```dockerfile
|
|
|
# Dockerfile示例
|
|
|
FROM python:3.9
|
|
|
WORKDIR /app
|
|
|
COPY requirements.txt .
|
|
|
RUN pip install -r requirements.txt
|
|
|
COPY . .
|
|
|
CMD ["uwsgi", "--ini", "uwsgi.ini"]
|
|
|
```
|
|
|
|
|
|
## 🤝 开发贡献
|
|
|
|
|
|
### 代码规范
|
|
|
- 遵循PEP 8编码规范
|
|
|
- 使用类型注解
|
|
|
- 编写详细的文档字符串
|
|
|
- 添加适当的单元测试
|
|
|
|
|
|
### 提交规范
|
|
|
- 使用清晰的提交信息
|
|
|
- 一个功能一个提交
|
|
|
- 提交前运行测试
|
|
|
- 代码审查流程
|
|
|
|
|
|
## 📄 许可证
|
|
|
|
|
|
本项目采用MIT许可证。详见[LICENSE](LICENSE)文件。
|
|
|
|
|
|
## 👥 开发团队
|
|
|
|
|
|
- **HANJUN** - 项目架构设计
|
|
|
- **HANJUN** - 核心功能开发
|
|
|
- **HANJUN** - 用户系统开发
|
|
|
- **HANJUN** - 前端界面设计
|
|
|
- **HANJUN** - 测试和文档
|
|
|
|
|
|
## 📞 技术支持
|
|
|
|
|
|
如有问题或建议,请通过以下方式联系:
|
|
|
|
|
|
1. 查看本文档的故障排除部分
|
|
|
2. 检查项目Issue列表
|
|
|
3. 提交新的Issue描述问题
|
|
|
|
|
|
---
|
|
|
|
|
|
**项目测试&主要二次开发**HANJUN
|
|
|
**最后更新**: 2025年11月
|
|
|
**版本**: v1.0.0 |