【发布时间】:2019-12-12 12:26:20
【问题描述】:
我刚开始使用 Django 并尝试制作一个音频播放器应用程序网站。我(管理员)希望能够上传访问者可以收听的音频文件。
我创建了一个模型,用于成功上传文件、获取输入文件名并将其存储在我的应用目录中的媒体文件夹中:
class Song(models.Model):
name = models.CharField(max_length=125)
audio_file = models.FileField(upload_to='audio_player/media/audio_player/')
def __str__(self):
return self.name
在我的模板中,我设置了一个 for 循环来为每个不同的音轨创建音频播放器列表。:
<div class="container">
{% for song in songs %}
<audio controls id="player">
<source src="{{ song.audio_file.url }}" type="audio/wav">
</audio>
{% endfor %}
</div>
现在这就是我卡住的地方。相应地出现音频播放器,但您无法播放任何音频。我尝试通过 Chromes DevTools 进行检查,并且源或 src 是文件的正确文件路径。
<source src="audio_player/media/audio_player/Song.wav" type="audio/wav">
最后一天我一直在发疯,试图找出导致它不起作用的原因。我花了很多时间试图让它为文件提供正确的路径,但即使它似乎这样做了,文件仍然无法播放。
我怀疑它可能与将文件传递到模板中有关,据我了解,您应该能够将文件作为上下文传递,对吗?
这就是我的视图的设置方式:
def ap(request):
context = {
"songs": Song.objects.all(),
}
return render(request, "audio_player/home.html",context)
感谢我能得到的任何帮助!对于任何最终的格式错误等,我们深表歉意......
【问题讨论】:
-
您是否在
settings.py中设置了媒体? -
如编辑 MEDIA_ROOT 和 MEDIA_URL?不,因为我使用的是“upload_to='audio_player/media/audio_player/”,所以我认为我不需要指定它们?还是我完全错了?
-
顺便说一句,我已经尝试了一些在设置中使用 MEDIA 的解决方案,这些解决方案有助于解决其他用户的类似问题,但最终都没有工作。
-
你完全错了,你只说
upload_to = "/audio_player/",然后在settings.py中设置媒体 -
谢谢!我意识到我完全错了实际上有帮助!根据 Django 文档以正确的方式应用了 MEDIA_URL 和 MEDIA_ROOT,并且在对设置进行了一些摆弄之后,我让它工作了!
标签: python django python-3.x