【发布时间】:2021-05-20 09:26:54
【问题描述】:
我在一个看起来非常简单的问题上尝试了几个小时,我尝试了所有方法,但没有成功。我想在模板上显示博客列表。所以,我有这些看法:
from django.views import generic
from .models import Blog
class BlogList(generic.ListView):
queryset = Blog.objects.filter()
template_name = 'table_of_contents.html'
context_object_name = 'blog_list'
class BlogDetail(generic.DetailView):
model = Blog
template_name = 'blog.html'
这是table_of_contents.html 模板,我想在其中显示博客列表:
{% block table_of_contents %}
<p>Just for test</p>
{{ blog_list }}
{%endblock table_of_contents %}
我希望这会在前端显示queryset 字符串,但事实并非如此。我使用 Django shell 调试了 BlogList 并确保 queryset 不为空。
我在这里遗漏的(明显的)细节是什么?
编辑: 这也是 blog.html 模板:
{% extends 'base.html' %}
{% block content %}
<p>Test blog template</p>
{% block table_of_contents %} {% include 'table_of_contents.html' %} {% endblock table_of_contents %}
{% endblock content %}
同样,查询字符串根本不会呈现,无论我使用 for 循环还是只执行 {{ blog_list }}。
【问题讨论】:
-
你能分享“父”模板吗?
-
好的,我添加了对我的问题的编辑。
-
base 的具体外观如何?有
table_of_contents的块吗? -
没有。在
base.html我有{% block content %} {% endblock content %}。这就是注入blog.html的地方。 ` -
因此,blog.html 扩展了 base.html 并且 table_of_contents.html 应该是 blog.html 中的侧边栏。
标签: django listview templates django-queryset