【问题标题】:Django Audio PlayerDjango 音频播放器
【发布时间】:2019-09-07 17:20:13
【问题描述】:

我正在开发一个 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)

在模板中,我循环遍历对象并将它们链接到音频播放器。

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

这就是问题所在。

按钮保持不变,始终播放相同的曲目。

我已经为歌曲设置了一个赞按钮,它是一个多对多字段。

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 字段可以切换音频播放器?

但是考虑到播放器链接,这将如何在模板中工作:

<button onclick="document.getElementById('player').play()"></button> 

感谢您的任何建议

【问题讨论】:

    标签: django html5-audio


    【解决方案1】:

    我想 getelementbyid 是问题所在,所有循环的音频标签都有相同的 id,所以 JS 只是开始播放第一个。

    【讨论】:

    • 是的,这就是问题所在。我找到了另一个解决方案
    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    相关资源
    最近更新 更多