Мой цикл for Django не отображает элементы

Я делаю цикл для отображения всех песен на главной странице моего веб-сайта потоковой передачи музыки с помощью карусели, но это не работает (он ничего не отображает, но в моей базе данных около 10 песен). Как я могу это исправить? Это мой HTML-код:

<div id = "All-songs" style = "padding: 5px">
    <h2>All Songs</h2>
    <div class = "main-carousel" data-flickity='{"groupCells":5 , "contain": true, "pageDots": false, "draggable": false, "cellAlign": "left", "lazyLoad": true}'>
        {% for i in allsongs %}
            <div class = "carousel-cell">
                <section class = "main_song">
                    <div class = "song-card">
                        <div class = "containera">
                            <img src = "{{i.image}}" id = "A_{{i.id}}" alt = "song cover">
                            <div class = "overlaya"></div>
                            <div>
                                <a class = "play-btn" href = "{{i.preview_url}}" id = "{{i.id}}"><i> class = "fas fa-play-circle"></i></a>
                                {% if user.is_authenticated %}
                                    <div class = "add-playlist-btn">
                                        <a id = "W_{{i.song_id}}" title = "Add to Playlist" onclick = "showDiv(this)"></a>
                                    </div>
                                {% endif %}
                            </div>
                        </div>
                    </div>
                    <div>
                        <p class = "songName" id = "B_{{i.id}}">{{i.name}}</p>
                    </div>
                    <p class = "artistName">{{i.singer1}}</p>
                </section>
            </div>
        {% endfor %}
    </div>
</div>

это view.py:

def allSongs(request):
allsongs = list(Song.objects.all())
random.shuffle(allsongs)
return render(request, 'allSongs.html', {'allsongs': allsongs)

а это models.py:

class Song(models.Model):
song_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=50)
artist = models.CharField(max_length=50)
album = models.CharField(max_length=50, blank=True)
genre = models.CharField(max_length=20, blank=True, default='Album')
song = models.FileField(upload_to = "media/songs/", validators=[FileExtensionValidator(allowed_extensions=['mp3', 'wav'])], default = "name")
image = models.ImageField(upload_to = "media/songimage/", validators=[FileExtensionValidator(allowed_extensions=['jpeg', 'jpg', 'png'])], default = "https://placehold.co/300x300/png")
data = models.DateTimeField(auto_now=False, auto_now_add=True)
slug = models.SlugField(unique=True)

def __str__(self):
    return self.name

class Meta:
    ordering = ['name']

На первый взгляд, я не понимаю, почему это не видно. Можете ли вы проверить, заполнен ли allsongs тем, что вы хотите? Кроме того, вы можете добавить проверку наличия элементов allsongs и посмотреть, есть ли проблема. Также у вас неверно написан тег i: <i> class = "fas fa-play-circle"></i>.

Milos Stojanovic 16.06.2024 12:46

В вашем views.py вы можете использовать print, чтобы увидеть, что содержит ваша переменная allsongs. Вы можете использовать блок if, чтобы увидеть, что вы получаете в шаблоне. Вот так: {% if allsongs %} <p>Found {{ allsongs|length }} songs.</p> {% else %} <p>No songs found.</p> {% endif %}

Milos Stojanovic 16.06.2024 14:00

ОК, отображается сообщение «Песни не найдены». я делал ошибку

Federico Monetti 16.06.2024 15:27

Тогда я думаю, у вас нет песен в базе данных.

Milos Stojanovic 16.06.2024 15:46

да, у меня 12 песен...

Federico Monetti 16.06.2024 15:49

если песни не отображаются, возможно, что-то не так с вашей базой данных. Возможно, вы добавляете песни в другую базу данных. Какую базу данных вы используете? Если SQLite, то он может создать файл в другой папке, и вы проверите неправильный файл. Но сначала вы можете использовать print(), чтобы проверить, что вы получаете с Song.objects.all()

furas 16.06.2024 21:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
6
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил проблему, интегрируя представление allSongs (в приложенииviews.py) с представлением домашней страницы (в представлении проектаview.py) следующим образом:

def homepage(request):
     songs = Song.objects.all()
     return render(request, 'homepage.html', {'songs': songs})

Другие вопросы по теме