Django 音频播放器

Django Audio Player

我正在开发一个 django 音乐应用程序,我有一个名为 Song 的模型。

class Song(models.Model):
    user        = models.ForeignKey(settings.AUTH_USER_MODEL)
    ...
    audiotrack  = models.FileField(upload_to=upload_image_path)
    likes       = models.ManyToManyField(settings.AUTH_USER_MODEL,blank=True,related_name='track_likes')

它作为对象列表传入模板。

def list_view(request):
    songs = Song.objects.all()
    context = {
        'tracks_list' : songs
    }
    return render(request,"musica/list.html",context)

在模板中,我对对象进行 for 循环,然后 link 将它们传送到音频播放器。

<audio id="player" src="{{ object.audiotrack.url }}"></audio>
<button onclick="document.getElementById('player').play()"></button> 

这就是问题所在。

按钮保持不变,并且始终播放同一首曲目。

我已经为歌曲设置了一个赞按钮,这是一个 ManyToMany 字段。

class TrackLikeToggle(RedirectView):
    def get_redirect_url(self,*args,**kwargs):
        id = self.kwargs.get("id")
        obj = get_object_or_404(Song,id=id)
        url_ = obj.get_absolute_url()
        user = self.request.user
        if user.is_authenticated():
            if user in obj.likes.all():
                obj.likes.remove(user)
            else:
                obj.likes.add(user)
        return url_

我需要为播放按钮制作类似的东西吗? 一个名为 playing 的 OneToOne 字段可以切换音频播放器?

但考虑到玩家 link:

,这在模板中如何运作
<button onclick="document.getElementById('player').play()"></button> 

感谢您的任何建议

我认为 getelementbyid 是问题所在,所有循环播放的音频标签都具有相同的 ID,因此 JS 只开始播放第一个。