Я слежу за серией уроков по django, на музыкальном веб-сайте есть ListView, который содержит альбомы (это показано), но не отображается DetailView, содержащий список песен в каждом альбоме.
Я попытался изменить имя итерации в цикле for, но он все еще не работает, список показывает, когда я не использую универсальный метод, т.е. использую функции index и detail вместо классов IndexView и DetailView.
МОЙ music.views Код
class IndexView(generic.ListView):
template_name='music/index.html'
def get_queryset(self):
return Albums.objects.all()
class DetailView(generic.DetailView):
model = Albums
template_name = 'music/detail.html'
Мой код detail.html, который должен показывать список песен, но не работает
{% extends 'music/base.html' %}
{% block title %} Album Details {% endblock %}
{% block body %}
<img src ="{{ all_album.alb_logo }}">
<h1>{{ all_album.alb_title }}</h1>
<ul>
{% for song in all_album.song_set.all %}
<li>{{ song.song_title }} </li>
{% endfor %}
</ul>
<br>
{% endblock %}
Мой index.html, который показывает список альбомов, это работает
{% extends 'music/base.html' %}
{% block body %}
<h2>List of Current albums available</h2>
<div class='container-fluid'>
<div class='row'>
{% for album in object_list %}
<div class='col-lg-4'>
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="{{ album.alb_logo }}" >
<div class="card-body">
<h5 class="card-title">{{ album.alb_title }}</h5>
<p class="card-text">{{ album.alb_artist }}</p>
<a href="{% url 'music:detail' album.id %}" class="btn
btn-primary btn-sm">View details</a>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
Мой код urls.py #
urlpatterns = [
path('',views.IndexView.as_view(), name='index'),
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
]
Ожидается, что на странице detail.html будет показан список песен в выбранном альбоме, который уже находится в базе данных при нажатии, но не отображается.