我无法使用我的详细功能来简单地检索仅一个模型元素的所有字段。
我的代码是:
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 告诉我:“上下文必须是一个字典而不是集合。”
我想这是由于我从 id 检索 Band 对象的方式造成的。但我无法集中注意力。这就是为什么我来寻求帮助。
提前致谢
您有上下文错误!因为上下文必须是字典。
def band_detail(request, id):
band = Band.objects.get(id=id)
return render(request,
'bands/band_detail.html',
context={'band': band })
代码中的错误在于将数据传递给模板的方式。您传递给渲染函数的字典格式不正确。您应该使用键值对将数据传递到模板,其中键是您要在模板中使用的变量名称,值是实际数据。