簡體   English   中英

在 django 中將動態變量從父模板傳遞到子模板

[英]passing dynamic variable from parent template to child template in django

我有一個模板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 model

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)

另外,我嘗試了這個解決方案

你的<h5>{{song.tittle}}</h5>呢? 如果你剪掉你的壞代碼,它是否顯示正常? 我認為您的{{song.tittle}}返回空字符串或 None 並且必須重寫為{{song.title}}

如果不適合您,請出示您的歌曲 model 代碼。

我通過將子模板modal form放在父模板文件中並將唯一ID分配給模態表單來解決我的問題。 通過這種方式,我能夠為每首歌曲唯一地調用addToPlaylist

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM