【问题标题】:My generic DetailView not showing list of items我的通用 DetailView 未显示项目列表
【发布时间】:2019-10-28 21:27:41
【问题描述】:

我正在关注 django 教程系列,音乐网站包含包含专辑的 ListView(正在显示),但包含每个专辑中歌曲列表的 DetailView 未显示。

我已尝试更改 for 循环中的迭代名称,但它仍然无法正常工作,列表显示了我何时不使用通用方法,即使用索引和详细信息函数而不是 IndexView 和 DetailView 类。

MY 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 页面应显示单击时已在数据库中的选定专辑中的歌曲列表,但未显示。

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    您在模板中使用了错误的上下文变量名(all_album),它应该是object。

    #detail.html 
    {% extends 'music/base.html' %}
    {% block title %} Album Details  {% endblock %}
    {% block body %}
        <img src="{{ object.alb_logo }}">
        <h1>{{ object.alb_title }}</h1>
        <ul>
            {% for song in object.song_set.all %}
                <li>{{ song.song_title }} </li>
            {% endfor %}
        </ul>
        <br>
    {% endblock %}
    


    参考:DetailView get_context_data() method--Django Doc

    【讨论】:

    • 嘿 JPG,你刚刚让我免于离开编码。非常感谢,上帝保佑,你不知道我有多开心。
    • 很高兴听到这个消息。无论如何,如果这解决了问题,请接受答案。 ??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多