python - django/react 检索和播放音频文件
问题描述
模型.py
from django.db import models
from datetime import datetime
class Song(models.Model):
title = models.CharField(max_length=64)
audio_file = models.FileField()
genre = models.CharField(max_length=64)
created_at = models.DateTimeField(default=datetime.utcnow)
序列化程序.py
from rest_framework import serializers
from . import models
class SongSerializer(serializers.ModelSerializer):
class Meta:
model = models.Song
fields = '__all__'
视图.py
from . import models, serializers
from rest_framework import viewsets, status
from rest_framework.response import Response
from rest_framework.views import APIView
class SongView(APIView): # get the songs
def get(self, request, format=None):
serializer = serializers.SongSerializer(models.Song.objects.all(), many=True)
return Response(serializer.data)
网址.py
from django.urls import path
from . import views
urlpatterns = [
path('songs/', views.SongView.as_view(), name='songs')
]
主页.js
import React from 'react'
import { useState, useEffect } from 'react'
import axios from 'axios'
const Home = () => {
const getSongs = () => {
axios.get('http://localhost:8000/api/songs/')
.then(res => setSongs(res.data)) // see data below (Response.json)
}
let [songs, setSongs] = useState([])
useEffect(() => {
getSongs()
console.log(songs)
}, [])
return (
<>
{
songs.map(song =>
(<div className='music-controller'>
<div className="music-controller-body">
<div className="music-controller-header">
<h2>{song.title}</h2>
<p><small>{song.genre}</small></p>
</div>
<div className="controls">
<i className="fas fa-play"></i>
<audio src={song.audio_file} autoPlay></audio> // Cannot retrieve url
</div>
</div>
</div>)
)}
</>
)
}
export default Home
响应.json
[
{
"id": 1,
"title": "Kubbi | Cascade",
"audio_file": "/media/Kubbi__Cascade.mp3",
"genre": "Instrumental",
"created_at": "2021-07-24T10:21:48Z"
}
]
我想要做的就是提取音频数据"/media/Kubbi__Cascade.mp3"
以便我可以实际播放它,我尝试实现另一个视图来获取 URL,urls = [x.audio_file.url for x in models.Song.objects.all()]
但最终获得了实际路径,我能做什么?
解决方案
推荐阅读
- python - 添加新创建的对象时的困惑 - Django REST Framework
- javascript - javascript如何返回具有键值的对象
- javascript - React Native react-native-responsive-screen 包在某些设备上不起作用
- java - Solr 8.9 中的 FileNotFoundException
- javascript - 为什么我们要将对象转换为 JSON 字符串化然后再转换回对象?
- php - 如何使用 JSON laravel 动态显示轮播图像
- c# - 仅在某些页面上的 RTF 页码
- python - 使用通配符从目录中查找和复制文件
- selenium - 如何在 Appium 中下载 android 设备
- javascript - 无法在angularjs中使用pdf.js查看数字签名的pdf文件