我有一个 html 页面,其中
<body>
<h8>
MY BLOGS
</h8>
<ul>
{% for bl in all_blogs %}
<li>{{bl.header}}</li>
{% endfor %}
</ul>
在“ul”中,它必须显示 all_blogs 中的所有项目是什么
def list_blogs(request):
all_blogs = Blog.objects.all
return render(request, 'blogs.html', {'blogs': all_blogs})
博客是
class Blog(models.Model):
header = models.CharField(max_length=100)
data = models.CharField(max_length=500)
def __str__(self):
return self.header
html 页面的输出只是“我的博客”,其中没有任何博客,在我的管理面板中我有 4 个博客,我尝试打印
for bl in all_blogs:
print(str(bl))
但是不行,我还检查了本地数据库中的博客,没有问题。
all()
[Django-doc]是一个方法,而不是属性,因此您应该调用它来获取所有Blog
对象的查询集,因此:
def list_blogs(request):
all_blogs = Blog.objects<b>.all()</b>
return render(request, 'blogs.html', {'blogs': all_blogs})
此外,在上下文中,您将查询集命名为 blogs
,不是 all_blogs
(这是 View 中变量的名称,但是您将其作为 'blogs'
传递到上下文),因此您应该将 View 中的键更改为 'all_blogs'
,或者将模板中的变量更改为:
<ul>
{% for bl in <b>blogs</b> %}
<li>{{bl.header}}</li>
{% endfor %}
</ul>
我是一名优秀的程序员,十分优秀!