首页 > 解决方案 > 尝试使用模型上传音频文件,但出现“未找到”错误(Django)

问题描述

我有一个“音乐”模型,允许用户通过“FileField”上传音频文件。该文件可以正常上传到我的媒体文件夹,但 profile.html 中的播放器返回“错误”,并且在终端中显示“未找到”,后跟音频文件路径。

我还是 django 的新手,所以如果有人能指出我在这里做错了什么,我将不胜感激。

这是终端中的错误:

未找到:/my-profile/djangoapp1/media/path/to/audio/05_-_Bicycle_Race.mp3 [13/Feb/2021 15:44:44]

“GET /my-profile/djangoapp1/media/path/to/audio/05_-_Bicycle_Race.mp3 HTTP/1.1”404 6743

模型.py

class Music(models.Model):
    track = models.FileField(upload_to='path/to/audio')
    title = models.TextField(max_length=50)
    artwork = models.ImageField(upload_to='path/to/img', blank=True)
    artist = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

表格.py

class MusicForm(forms.ModelForm):
    class Meta:
        model = Music
        fields = ['track', 'title', 'artwork']
        widgets = {
          'title': forms.Textarea(attrs={'rows':1, 'cols':1}),
        }

视图.py

@login_required 
def music_upload(request):
    if request.method == "POST":
        form = MusicForm(request.POST, request.FILES)
        if form.is_valid():
            user = request.user
            song = form.save(commit=False)
            song.artist = user
            song.save()
            messages.success(request, f'Track Uploaded')
            return redirect('my_profile')
    else:
        form = MusicForm()
    return render(request, 'feed/music_upload.html', {'form':form})

profile.html

        <h3>MUSIC</h3>
        <audio controls>
          <source src="djangoapp1/media/path/to/audio/05_-_Bicycle_Race.mp3" type="audio/mpeg">
        Your browser does not support the audio element.
        </audio>

标签: djangodjango-modelsdjango-views

解决方案


推荐阅读