python、pycharm、Django、Mysql都已经安装好了!
目录
2025/3/13
一.打开CMD,安装Mysql驱动
pip install mysqlclient
二.项目初始化:
1.创建Django项目:
django-admin startproject project1
cd project1
2.创建应用:
python manage.py startapp MyApp
3.项目配置(均在settings.py中进行):
(1).添加应用
INSTALLED_APPS = [
...
'MyApp,
]
(2).配置数据库(MySQL):
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)
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、生成迁移文件并执行
python manage.py makemigrations
python manage.py migrate
打开CMD,切换到Django项目目录
二、后端API开发
1.创建序列化器(MyApp/serializers.py)
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)
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)
from django.urls import path
from .views import MusicListView
urlpatterns = [
path('music/', MusicListView.as_view(), name='music-list'),
]
4.集成推荐算法
在MyApp/Recommendation.py中实现混合推荐算法
from .models import UserBehavior, Music
def recommend_music(user_id):
# 协同过滤 + 内容推荐逻辑
# 返回推荐音乐ID列表
return [1, 2, 3] # 示例数据
三、前端开发
1.创建Vue项目
从CMD窗口切换到要创建项目的目录
npm install -g @vue/cli
vue create music-recommendation-frontend
cd music-recommendation-frontend
2.安装依赖
npm install axios vue-router
3.创建推荐页面组件(src/views/Recommendation.vue
)
<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项目
python manage.py runserver
2.启动Vue开发服务器
切换到vue项目对应的目录
npm run serve