Django ListView 不显示数据库中的数据,尽管已填充模型

问题描述 投票:0回答:1

我是 Django 新手,正在尝试创建一个简单的博客应用程序。我有一个 ListView 应该显示数据库中的所有博客文章,但模板显示一个空页面。我已通过管理面板确认数据库中有条目。

这是我的代码:

# models.py
from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

# views.py
from django.views.generic import ListView
from .models import BlogPost

class BlogListView(ListView):
    model = BlogPost
    template_name = 'blog/blog_list.html'

# blog_list.html template
{% extends 'base.html' %}

{% block content %}
    {% for post in blogpost_list %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
    {% endfor %}
{% endblock %}

有人可以帮我找出我做错了什么吗?

我通过管理面板检查了数据库并确认帖子存在 尝试使用 print(self.get_queryset()) 在视图中打印查询集 将模板变量从 blogpost_list 更改为 object_list

页面上显示的所有博客文章的想要列表,但相反,我得到的是一个没有错误的空白页面。

python django templates listview django-views
1个回答
0
投票

在views.py中,添加此代码,将查询集作为“blogpost_list”传递给模板

从 django.views.generic 导入 ListView

从.models导入BlogPost

类 BlogListView(ListView):

model = BlogPost
template_name = 'blog/blog_list.html'
context_object_name = 'blogpost_list' 
© www.soinside.com 2019 - 2024. All rights reserved.