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 只开始播放第一个。
我正在开发一个 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 只开始播放第一个。