个性化音乐推荐系统

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
相关推荐
好奇的菜鸟4 分钟前
Ubuntu 18.04 启用root账户图形界面登录指南
数据库·ubuntu·postgresql
天桥下的卖艺者5 分钟前
使用R语言编写一个生成金字塔图形的函数
开发语言·数据库·r语言
Facechat17 分钟前
鸿蒙开发入坑篇(九):本地数据库 (RDB) 深度解析
数据库·华为·harmonyos
Dxy123931021618 分钟前
MySQL删除表语句详解
数据库·mysql
uoKent27 分钟前
MySQL常见命令梳理大纲
数据库·mysql
晚霞的不甘39 分钟前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活
2301_7657031441 分钟前
工具、测试与部署
jvm·数据库·python
Android系统攻城狮43 分钟前
Android tinyalsa深度解析之pcm_close调用流程与实战(一百零四)
android·pcm·tinyalsa·音频进阶·音频性能实战·android hal
weixin_411191841 小时前
LifecycleEventObserver和DefaultLifecycleObserver使用
android
山岚的运维笔记1 小时前
SQL Server笔记 -- 第13章:IF...ELSE
数据库·笔记·sql·microsoft·sqlserver