个性化音乐推荐系统

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

目录

2025/3/13


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 modelsclass 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, SentimentAnalysisclass UserSerializer(serializers.ModelSerializer):class Meta:model = Userfields = '__all__'class MusicSerializer(serializers.ModelSerializer):class Meta:model = Musicfields = '__all__'

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

from rest_framework import serializers
from .models import User, Music, UserBehavior, SentimentAnalysisclass UserSerializer(serializers.ModelSerializer):class Meta:model = Userfields = '__all__'class MusicSerializer(serializers.ModelSerializer):class Meta:model = Musicfields = '__all__'

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

from django.urls import path
from .views import MusicListViewurlpatterns = [path('music/', MusicListView.as_view(), name='music-list'),
]

4.集成推荐算法

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

from .models import UserBehavior, Musicdef 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33181.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试高频#LeetCode#Hot100-字母异位词分组

题号链接 49. 字母异位词分组 - 力扣&#xff08;LeetCode&#xff09; 1首先定义map集合一个String对应一个String[]集合&#xff0c;遍历字符串数组 2对其先进行拆分&#xff0c;拆分为字符数组&#xff0c;再进行排序&#xff0c;再转为字符串 3如果key值没有就创建一个字符…

笔试刷题专题(一)

文章目录 最小花费爬楼梯&#xff08;动态规划&#xff09;题解代码 数组中两个字符串的最小距离&#xff08;贪心&#xff08;dp&#xff09;&#xff09;题解代码 点击消除题解代码 最小花费爬楼梯&#xff08;动态规划&#xff09; 题目链接 题解 1. 状态表示&#xff1…

hcia华为路由器静态路由实验配置

目录 一、网络拓扑分析 二、华为路由器配置&#xff08;分设备&#xff09; 1. R1 配置 2. R2 配置 3. R3 配置 三、验证测试 拓扑图 一、网络拓扑分析 IP 地址规划&#xff1a; R1&#xff1a;E0/0/0&#xff08;12.1.1.1/24&#xff09;、E0/0/1&#xff08;192.168.1.…

贪心算法和遗传算法优劣对比——c#

项目背景&#xff1a;某钢管厂的钢筋原材料为 55米&#xff0c;工作需要需切割 40 米&#xff08;1段&#xff09;、11 米&#xff08;15 段&#xff09;等 4 种规格 &#xff0c;现用贪心算法和遗传算法两种算法进行计算&#xff1a; 第一局&#xff1a;{ 40, 1 }, { 11, 15…

PowerBi,一个简单的动态度量值以及图表联动的案例

假设我们有一张[销量表]&#xff0c;数据如下: 我们想做下面的效果: 左边的饼图显示每个门店的销量以及百分比&#xff0c;右边是一个堆积条形图&#xff0c;显示每种商品的销量&#xff0c;并且有一个切片器能切换显示销售渠道 做法如下&#xff1a; 1.报表里放入一个饼图&a…

夜莺监控 v8.0 新版通知规则 | 对接企微告警

对新版本通知规则还不太了解的用户可以阅读文章&#xff1a;《夜莺监控巨大革新&#xff1a;抽象出通知规则&#xff0c;增强告警通知的灵活性》。下面我们将以企微通知为例&#xff0c;介绍如何使用新版通知规则来对接企微通知。 上图是通知规则对接企微通知的示意逻辑图。 在…

HCIA-11.以太网链路聚合与交换机堆叠、集群

链路聚合背景 拓扑组网时为了高可用&#xff0c;需要网络的冗余备份。但增加冗余容易后会出现环路&#xff0c;所以我们部署了STP协议来破除环路。 但是&#xff0c;根据实际业务的需要&#xff0c;为网络不停的增加冗余是现实需要的一部分。 那么&#xff0c;为了让网络冗余…

LeetCode 解题思路 15(Hot 100)

解题思路&#xff1a; 引入哑节点&#xff1a; 简化头节点删除操作&#xff0c;统一处理所有边界条件。快慢指针法&#xff1a; 快指针先移动 n 步&#xff0c;确保快慢指针距离为 n&#xff0c;之后同步移动快慢指针。当快指针到达末尾时&#xff0c;慢指针指向倒数第 n 个节…

大数据学习(65)- Hue详解

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

设计模式之美

UML建模 统一建模语言&#xff08;UML&#xff09;是用来设计软件的可视化建模语言。它的语言特点是简单 统一 图形化 能表达软件设计中的动态与静态信息。 UML的分类 动态结构图&#xff1a; 类图 对象图 组件图 部署图 动态行为图&#xff1a; 状态图 活动图 时序图 协作…

【大模型学习】第十八章 强化学习介绍

目录 引言 一、 强化学习的理论基础与发展脉络 1.1 基本概念与核心要素 1.2 历史演进与里程碑 二、 强化学习的数学框架与核心算法 2.1 马尔可夫决策过程与贝尔曼方程 2.2 基于价值的算法 2.3 基于策略的算法 2.4 混合算法&#xff1a;Actor-Critic架构 2.5 应用举例 …

Chatbox通过百炼调用DeepSeek

解决方案链接&#xff1a;评测&#xff5c;零门槛&#xff0c;即刻拥有DeepSeek-R1满血版 方案概览 本方案以 DeepSeek-R1 满血版为例进行演示&#xff0c;通过百炼模型服务进行 DeepSeek 开源模型调用&#xff0c;可以根据实际需求选择其他参数规模的 DeepSeek 模型。百炼平台…

网络安全设备系统集成方案 系统集成和网络安全

一、网络安全概述 计算机网络安全是指计算机、网络系统的硬件、软件以及系统中的数据受到保护&#xff0c;不因偶然的或恶意的原因而遭到破坏、更改、泄露&#xff0c;确保系统能连续和可靠地运行&#xff0c;使网络服务不中断。广义地说&#xff0c;凡是涉及网络上信息的保密…

【菜鸟飞】通过vsCode用python访问公网deepseek-r1等模型(Tocken模式)

目标 通过vsCode用python访问deepseek。 环境准备 没有环境的&#xff0c;vscode环境准备请参考之前的文章&#xff0c;另外需安装ollama&#xff1a; 【菜鸟飞】用vsCode搭建python运行环境-CSDN博客 AI入门1&#xff1a;AI模型管家婆ollama的安装和使用-CSDN博客 选读文章…

C# Unity 唐老狮 No.9 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体…

【2025最新】phpMyAdmin渗透利用全链路:信息收集→漏洞探测→后渗透提权技巧

目录 一、信息收集与漏洞探测 1. 获取关键信息 2. 权限验证 3. 漏洞扫描 二、历史漏洞利用方法 1. 写入 Webshell 到了这个地步密码探索 2. 远程代码执行&#xff08;RCE&#xff09; 3. 提权与后渗透 4. 文件包含漏洞 三、高危历史漏洞列表 四、防御与加固建议 五…

泰山派开发之—Ubuntu24.04下Linux开发环境搭建

简介 最近翻到了吃灰已久的泰山派&#xff0c;是刚出来的时候用优惠券买的&#xff0c;当时价格挺便宜的&#xff0c;最近给它翻出来了&#xff0c;打算试试做个项目。买的泰山派容量是2G16G&#xff0c;SOC芯片使用的是RK3566&#xff0c;搭载1TOP算力的NPU&#xff0c;并且具…

05延迟任务精准发布文章(redis实现延迟任务、分布式锁)

上架不代表发布(需要发布app端才会显示文章&#xff09; 1)文章定时发布 2)延迟任务概述 2.1)什么是延迟任务 定时任务&#xff1a;有固定周期的&#xff0c;有明确的触发时间 延迟队列&#xff1a;没有固定的开始时间&#xff0c;它常常是由一个事件触发的&#xff0c;而在…

linux 命令 ls

ls 是 Linux 系统中用于列出目录内容的核心命令&#xff0c;几乎所有日常操作都会用到。以下是其详细用法和常见场景说明 1. 基础语法 ls [选项] [目录/文件] 不指定目录时&#xff0c;默认列出当前目录的内容。 可以指定文件或目录路径&#xff0c;支持通配符&#xff08;如…

c++介绍函数指针 十

指针代表内存中地址标识符&#xff0c;变量&#xff0c;数组都是存储内存中的数据。所以可以获得它们的地址&#xff0c;用指针来表示这块内存。 如图输出内存中的地址。 对于一个函数来说&#xff0c;也是内存中存储这段数据&#xff0c;所以我们也可以获取函数的地址。 函数…