Django - 如何在模板中显示特定内容
Django - How to display specific content in a template
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
returns 是一个可迭代的 QuerySet,要在您的模板中显示正文,您需要使用 for循环:
{% block content %}
{% for i in body %}
<h1>{{ i.title }}</h1>
{% endfor %}
{% endblock content %}
无论如何,使用TemplateView
到return单个项目filter(id=1)
似乎表明您需要深入挖掘文档,这种观点旨在通用,而不是return 具有唯一 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.D 指出的那样遍历列表。
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
returns 是一个可迭代的 QuerySet,要在您的模板中显示正文,您需要使用 for循环:
{% block content %}
{% for i in body %}
<h1>{{ i.title }}</h1>
{% endfor %}
{% endblock content %}
无论如何,使用TemplateView
到return单个项目filter(id=1)
似乎表明您需要深入挖掘文档,这种观点旨在通用,而不是return 具有唯一 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.D 指出的那样遍历列表。