个性化音乐推荐系统

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
相关推荐
杨运交7 小时前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式
FungLeo7 小时前
Node 后端实战 · 列表查询到底怎么写?一个通用 DSL 封装,过滤分页排序一次搞定
数据库·node.js·serverless·dsl 封装·通用列表查询
抓蛙师8 小时前
多租户 tenant_id SQL 注入漏洞分析与应急响应报告
数据库·sql
ACP广源盛139246256738 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 私有化部署下 GSV2221 视频转换芯片机遇分析
大数据·数据库·人工智能
七牛开发者9 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
何以解忧,唯有..10 小时前
数据库索引失效的常见情况与优化策略
数据库·sql·oracle
这个DBA有点耶11 小时前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
启雀AI11 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
01_ice12 小时前
MySQL库和表的操作
数据库·mysql
oradh12 小时前
Oracle UNDO表空间管理维护总结
数据库·oracle·undo表空间·undo表空间管理·undo表空间管理维护