1、项目说明
基于python+Django+Mysql的音乐网站系统项目实战
项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里《python环境配置》的视频里有讲解)
- 首先需要创建数据库数据库名字叫做 db_music
- 运行sql导入数据或者也可以直接用命令生成(视频有讲解)
- 需要安装一下下面的模块(如果运行提示有模块未安装,安装一下即可,命令同下,改一下模块名即可)
项目需要安装 Django、PyMySQL及其附带的其他一些模块
- Django==3.2.17
- PyMySQL==0.9.3
安装命令如下:
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django(替换模块名)
2、项目主要技术
-
python编程技术
-
Django框架技术
-
Mysql数据库技术
-
html编程
-
css编程
-
js编程
3、项目结构
-
comment 歌曲点评模块
-
index 主页模块
-
media 上传的文件存放文件夹
-
musicwebsite 主模块(项目的配置文件、主路由)
-
play 歌曲播放模块
-
ranking 歌曲排行榜模块
-
search 歌曲搜索模块
-
static 静态文件存放文件夹
-
templates 模板文件存放文件夹
-
user 用户模块
-
manage.py 项目入口
4、项目主要功能
-
用户登录注册
-
音乐展示,排行,推荐,搜索
-
音乐的播放,同步歌词,歌曲评论
-
管理员对音乐、用户、评论的管理(添加,删除,修改,查询)
5、部分源码
user.views.py
from django.shortcuts import render, redirect
from django.shortcuts import reverse
from index.models import *
from user.models import *
from .form import MyUserCreationForm
from django.db.models import Q
from django.contrib.auth import login, logout
from django.contrib.auth.hashers import check_password
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
from django.core.paginator import EmptyPage
from django.core.paginator import PageNotAnInteger
# 用户登录注册
def loginView(request):
user = MyUserCreationForm()
if request.method == 'POST':
# 登录
if request.POST.get('loginUser', ''):
u = request.POST.get('loginUser', '')
p = request.POST.get('password', '')
if MyUser.objects.filter(Q(mobile=u) | Q(username=u)):
u1 = MyUser.objects.filter(Q(mobile=u) | Q(username=u)).first()
if check_password(p, u1.password):
login(request, u1)
return redirect(reverse('home', kwargs={'page': 1}))
else:
tips = '密码错误'
else:
tips = '用户不存在'
# 注册
else:
u = MyUserCreationForm(request.POST)
if u.is_valid():
u.save()
tips = '注册成功'
else:
if u.errors.get('username', ''):
tips = u.errors.get('username', '注册失败')
else:
tips = u.errors.get('mobile', '注册失败')
return render(request, 'user.html', locals())
# 用户中心
# 设置用户登录限制
@login_required(login_url='/user/login.html')
def homeView(request, page):
# 热搜歌曲
searchs = Dynamic.objects.select_related('song').order_by('-search').all()[:4]
# 分页功能
songs = request.session.get('play_list', [])
paginator = Paginator(songs, 3)
try:
pages = paginator.page(page)
except PageNotAnInteger:
pages = paginator.page(1)
except EmptyPage:
pages = paginator.page(paginator.num_pages)
return render(request, 'home.html', locals())
# 退出登录
def logoutView(request):
logout(request)
return redirect('/')
6、运行截图
7、项目总结
本项目是一个非常适合练手或者作为毕业设计的一个项目,对我们的Django开发技术的提升有很大的帮助,推荐大家学习研究这个项目,搞懂其中的原理流程以及知识点非常关键。
项目资料截图:
资料获取地址:https://h5.m.taobao.com/awp/core/detail.htm?ft=t&id=706443347568
B站视频讲解地址:https://www.bilibili.com/video/BV1J24y1G7c7/
注:其他问题请参看视频讲解,都有介绍,一定要认真看完哦!
代码编写、视频录制不易,感谢您的支持,祝您学习愉快!