Django新手问题-我需要在模板中显示一个特定的条目。到目前为止,我还没能让它工作。我有以下代码:
模型:
class BasicPage(models.Model):
title = models.CharField(max_length=200)
body = HTMLField()
def __str__(self):
return self.title
视图:
class TermsPageView(TemplateView):
model = BasicPage
template_name = 'terms.html'
def get_queryset(self):
body = BasicPage.objects.filter(id=1)
return body
模板:
{% block content %}
<h1>{{ body.title }}</h1>
{% endblock content %}
我们需要更多的信息来解决这个问题,但我猜,作为get_queryset
返回一个QuerySet,这是一个可迭代的,在你的模板中显示主体,你需要使用一个for循环:
{% block content %}
{% for i in body %}
<h1>{{ i.title }}</h1>
{% endfor %}
{% endblock content %}
无论如何,使用TemplateView
返回单个项目filter(id=1)
似乎表明您需要深入挖掘文档,这种视图的目的是通用的,而不是返回具有唯一ID的单个项目。
要传递这个对象作为上下文,您需要使用get_context_data
:
class TermsPageView(TemplateView):
model = BasicPage
template_name = 'terms.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['body'] = BasicPage.objects.get(id=1)
return context
请注意,这是使用get
,所以你只会得到一个对象。但是如果您真的想使用查询集(如果您使用filter
),那么您需要以@May的形式遍历列表。