收到错误“上下文必须是字典而不是集合。”当尝试检索 django 模型中 id=id 的单个对象时

问题描述 投票:0回答:2

我无法使用我的详细功能来简单地检索仅一个模型元素的所有字段。

我的代码是:

views.py

def band_detail(request, id):
    band = Band.objects.get(id=id)
    return render(request,
                  'bands/band_detail.html',
                  {'band', band })


在 urls.py 中我写道:


path('bands/<int:id>/', views.band_detail)

所以,当我去 /bands/{id} 时,它应该显示我的 band_details.html 页面:


{% extends 'listings/base.html' %}

{% block content %}

    <h1> {{ band.name }} </h1>

    {% if band.active %}

        <h2> Active : <i class="fa-solid fa-check"></i> </h2>

    {% else %}

        <h2> Active : <i class="fa-solid fa-xmark"></i> </h2>

    {% endif %}
            

{% endblock %}


但是我得到了一个 typeError 告诉我:“上下文必须是一个字典而不是集合。”

error page

我想这是由于我从 id 检索 Band 对象的方式造成的。但我无法集中注意力。这就是为什么我来寻求帮助。

提前致谢

python django model
2个回答
2
投票

您有上下文错误!因为上下文必须是字典。

def band_detail(request, id):
   band = Band.objects.get(id=id)
    return render(request,
              'bands/band_detail.html',
               context={'band': band })

0
投票

代码中的错误在于将数据传递给模板的方式。您传递给渲染函数的字典格式不正确。您应该使用键值对将数据传递到模板,其中键是您要在模板中使用的变量名称,值是实际数据。

© www.soinside.com 2019 - 2024. All rights reserved.