个性化音乐推荐系统

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
相关推荐
消失的旧时光-19432 分钟前
kmp需要技能
android·设计模式·kotlin
扑克中的黑桃A10 分钟前
金仓多模数据库平替MongoDB的电子证照国产化实践——从2TB数据迁移到1600+并发支撑
数据库
计算机毕业设计小帅15 分钟前
【2026计算机毕业设计】基于Django的社区婴幼儿预防接种系统
数据库·django·课程设计
友友马33 分钟前
『 数据库 』MySQL复习 - 内置函数详解
数据库·mysql
帅得不敢出门1 小时前
Linux服务器编译android报no space left on device导致失败的定位解决
android·linux·服务器
雨白2 小时前
协程间的通信管道 —— Kotlin Channel 详解
android·kotlin
互联网中的一颗神经元2 小时前
小白python入门 - 6. Python 分支结构——逻辑决策的核心机制
开发语言·数据库·python
数据库知识分享者小北2 小时前
AI Agent的未来之争:任务规划,该由人主导还是AI自主?——阿里云RDS AI助手的最佳实践
数据库·阿里云·数据库rds
凸头2 小时前
MySQL 的四种 Binlog 日志处理工具:Canal、Maxwell、Databus和 阿里云 DTS
数据库·mysql·阿里云
码界奇点3 小时前
MongoDB 排序操作详解sort方法使用指南
数据库·mongodb·性能优化