【发布时间】:2020-09-27 01:25:21
【问题描述】:
我有一个模板songs.html,其中包含一个子模板addToPlaylist.html。我需要动态添加到播放列表的歌曲的标题。
这是songs.html 的代码,其中包括addToPlaylist.html。
{% for song in songs %}
<div class="col-16 col-sm-4 col-md-3 col-lg-2 single-album-item">
<div class="single-album">
<img src="{{MEDIA_URL}}{{song.image.url}}" alt="">
<div class="album-info">
<a href="{% url 'playSong' 'song' song.tittle %} ">
<h5>{{song.tittle}}</h5>
</a>
<p>{{song.album}}</p>
{% include "songs/addToPlaylist.html" with song_to_add=song.tittle %}
<a data-toggle="modal" href="#addToPlaylist" style="color: dimgrey; font-size: small;">Add to Playlist</a>
</div>
</div>
</div>
{% endfor %}
这是addToPlaylist.html的代码
<div class="form-group" style="width: 100%;">
<ul class="list-group list-group-flush" style="width: 100%;">
{% for playlist in playlists %}
<li class="list-group-item"><a href="{% url 'addToPlaylist' playlist.name song_to_add %}">{{playlist.name}}</a></li>
{% endfor %}
</ul>
</div>
但是为song_to_add 分配动态值不起作用。该变量不会向下传递给子模板。
这是传递播放列表值的views.py 代码
if request.user.is_authenticated:
playlists = Playlist.objects.filter()
songs = Song.objects.all()
return render(request, "songs\\songs.html", {'songs': songs, 'playlists':playlists,})
这是我的Song 模型
class Song(models.Model):
GENRES = [
('Rock','Rock'),
('Hip Hop','Hip Hop'),
('Blues', 'blues'),
('Heavy Metal', 'Heavy Metal'),
('Classical', 'Classical'),
('Funk', 'Funk')]
tittle = models.CharField(max_length=255)
album = models.CharField(max_length=255, null = True, blank = True)
genre = models.CharField(max_length = 30, choices=GENRES)
image = models.ImageField(upload_to='images/', blank = True , null = True)
songFile = models.FileField(upload_to='musics/', help_text=("Allowed type - .mp3, .wav, .ogg"))
uploaded_at = models.DateTimeField(auto_now_add=True)
另外,我试过this solution。
【问题讨论】:
-
在
addToPlaylist.html中,您正在迭代集合playlists,而您将song.title作为song_to_add从父模板传递。 -
@Moosa 我想要在父级中迭代的
song.title的值。所以我可以将相关歌曲添加到用户选择的播放列表中。song.title应该是点击了addToPlaylist按钮的歌曲的标题。 -
我很好奇即使
playlists可以在子模板中访问。如果您能分享确切的错误,将会很有帮助。 -
@Moosa 是的
playlists可在子模板中访问,但它是直接从视图传递的。我已经编辑了问题并包含了views.py代码。 -
@Moosa 错误是这个
NoReverseMatch at /song Reverse for 'addToPlaylist' with arguments '('broken', '')' not found. 1 pattern(s) tried: ['addToPlaylist/(?P<playlist>[^/]+)/(?P<song>[^/]+)$']因为song_to_add是未定义的所以url 会导致问题。
标签: python django variables django-templates include