在 Django 项目模板中生成音频文件

Generating audio files in a Django project template

我正在尝试使用 Django 创建一个非常简单的网站,其中将存储大量音频文件并可用于流式传输和下载。我知道还有其他方法可以做到这一点,比如使用 AWS,但我想先想办法。我将在此处包含我的模板,但要注意它目前很乱,因为我一直在尝试使用不同的结构来解决这个问题。

{% for song in concert.song_set.all %}
    <li>{{ song.song_title }}</li>
    <li>{{ song.song_location }}</li>
    <!-- Working -->
    <audio 
      class = "audioPlayer uniqueShowAP"
      controls <--controlsList="nodownload"
        src="{% static 'shows/audio/redRocks2019/01 Yi.mp3' %}">
        Your browser does not support the
        <code>audio</code> element.
    </audio>
    <!-- Not Working...yet -->
    <audio 
        class = "audioPlayer uniqueShowAP"
        controls <--controlsList="nodownload"
        src="/shows/static/shows/{{ song.song_location }}">
        Your browser does not support the
        <code>audio</code> element.
    </audio>

{% endfor %}

我想要发生的是,对于我保存的每场音乐会,它都会遍历该音乐会下保存的歌曲,并将它们添加到歌曲名称下。我将每首歌的相对位置保存在数据库中,这样我就可以调用它的位置。

我已经通过调用 {{ song.song_location }} 来测试它,它可以正确显示每首歌曲的位置。

我也尝试使用 src="{% static 'shows/audio/redRocks2019/01 Yi.mp3' %}" 只是为了确保该元素至少设置正确并且也能正常工作。

如何格式化元素中的 src="" 以将其指向正确的音频文件?我可以包括我的观点和模型,或者您可能需要的任何其他信息来帮助我解决这个问题。我已经这样做了一段时间了,只需要有人为我指明正确的方向。

我认为您应该考虑使用 FileField。您可以拥有一个带有 song_file = FileField(upload_to='song_files/') 字段的 Song 模型。然后,在循环遍历模型实例时可以更轻松地保存和访问文件:

<audio src='{{ song.song_file.url }}' controls></audio>

这些文件将根据您的媒体设置存储在本地。正如您提到的,您可以轻松过渡到使用 S3 等存储解决方案来存储媒体文件。它与 Django 一起工作得非常顺利,所以不要害怕。

静态文件应该用于 css、js 和不会更改的图像,例如网站图标。我想它可以用于静态歌曲,假设。但是,我认为考虑以这种方式将静态文件与模型实例结合使用有点做作和混乱。