个性化音乐推荐系统

python、pycharm、Django、Mysql都已经安装好了!

目录

2025/3/13


2025/3/13

一.打开CMD,安装Mysql驱动

bash 复制代码
pip install mysqlclient

二.项目初始化:

1.创建Django项目:

bash 复制代码
django-admin startproject project1
cd project1

2.创建应用:

bash 复制代码
python manage.py startapp MyApp

3.项目配置(均在settings.py中进行):

(1).添加应用
python 复制代码
INSTALLED_APPS = [
    ...
    'MyApp,
]
(2).配置数据库(MySQL):
python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'music_recommendation',    # 数据库名称
        'USER': 'root',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

2025/3/14

一、数据库设计与迁移

1、定义模型(MyApp/models.py)

python 复制代码
from django.db import models

class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    password = models.CharField(max_length=100)
    # 其他用户字段...

class Music(models.Model):
    title = models.CharField(max_length=200)
    artist = models.CharField(max_length=100)
    audio_features = models.JSONField()  # 存储MFCC等特征
    lyrics = models.TextField()
    # 其他音乐字段...

class UserBehavior(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    music = models.ForeignKey(Music, on_delete=models.CASCADE)
    play_count = models.IntegerField(default=0)
    favorite = models.BooleanField(default=False)
    timestamp = models.DateTimeField(auto_now_add=True)

class SentimentAnalysis(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    music = models.ForeignKey(Music, on_delete=models.CASCADE)
    sentiment = models.CharField(max_length=50)  # 如"happy", "sad"
    timestamp = models.DateTimeField(auto_now_add=True)

2、生成迁移文件并执行

bash 复制代码
python manage.py makemigrations
python manage.py migrate

打开CMD,切换到Django项目目录

二、后端API开发

1.创建序列化器(MyApp/serializers.py)

python 复制代码
from rest_framework import serializers
from .models import User, Music, UserBehavior, SentimentAnalysis

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

class MusicSerializer(serializers.ModelSerializer):
    class Meta:
        model = Music
        fields = '__all__'

2.创建视图(MyApp/views.py)

python 复制代码
from rest_framework import serializers
from .models import User, Music, UserBehavior, SentimentAnalysis

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

class MusicSerializer(serializers.ModelSerializer):
    class Meta:
        model = Music
        fields = '__all__'

3.配置URL路由(MyApp/urls.py)

python 复制代码
from django.urls import path
from .views import MusicListView

urlpatterns = [
    path('music/', MusicListView.as_view(), name='music-list'),
]

4.集成推荐算法

在MyApp/Recommendation.py中实现混合推荐算法

python 复制代码
from .models import UserBehavior, Music

def recommend_music(user_id):
    # 协同过滤 + 内容推荐逻辑
    # 返回推荐音乐ID列表
    return [1, 2, 3]  # 示例数据

三、前端开发

1.创建Vue项目

从CMD窗口切换到要创建项目的目录

bash 复制代码
npm install -g @vue/cli
vue create music-recommendation-frontend
cd music-recommendation-frontend

2.安装依赖

bash 复制代码
npm install axios vue-router

3.创建推荐页面组件**(src/views/Recommendation.vue)**

bash 复制代码
<template>
    <div>
        <h1>个性化推荐</h1>
        <div v-for="music in recommendedMusics" :key="music.id">
            <h3>{{ music.title }}</h3>
            <p>歌手: {{ music.artist }}</p>
        </div>
    </div>
</template>

<script>
import axios from 'axios'

export default {
    data() {
        return {
            recommendedMusics: []
        }
    },
    mounted() {
        axios.get('http://localhost:8000/core/music/')
            .then(response => {
                this.recommendedMusics = response.data
            })
    }
}
</script>

四、系统集成和测试

1.启动Django服务

CMD切换到Django项目

bash 复制代码
python manage.py runserver

2.启动Vue开发服务器

切换到vue项目对应的目录

bash 复制代码
npm run serve
相关推荐
北亚数据恢复14 分钟前
服务器数据恢复—RAID上层部署的oracle数据库数据恢复案例
数据库·oracle·服务器数据恢复·北亚数据恢复
拓端研究室29 分钟前
专题:2025医药生物行业趋势与投融资研究报告|附90+份报告PDF、原数据表汇总下载
android·开发语言·kotlin
小鱼人爱编程1 小时前
当上组长一年里,我保住了俩下属
android·前端·后端
2501_916013741 小时前
移动端 WebView 调试实战,多平台行为差异排查与统一调试流程
android·ios·小程序·https·uni-app·iphone·webview
不辉放弃1 小时前
kafka的消息存储机制和查询机制
数据库·kafka·pyspark·大数据开发
ZZH1120KQ2 小时前
ORACLE的用户维护与权限操作
数据库·oracle
妮妮喔妮3 小时前
图片上传 el+node后端+数据库
javascript·数据库·vue.js
liosen5 小时前
【安卓笔记】OOM与内存优化
android·oom·内存优化·内存分析命令·内存分析工具
仰望星空的凡人8 小时前
【JS逆向基础】数据库之MongoDB
javascript·数据库·python·mongodb
猿小蔡-Cool9 小时前
Android ADB命令之内存统计与分析
android·adb