首页 > 解决方案 > 为什么不在基本模板中使用 ListView?如何从 ech url 的基本模板调用视图?Django 2.1.5

问题描述

我想在侧边栏(模板“base_generic.html”)上显示数据库中所有评论的列表。我使用 ListView 执行此操作,但这不起作用。

视图.py

class CommentListView(generic.ListView):
    template_name = "base_generic.html"
    model = Comment
    paginate_by = 5

base_generic.html

{% block sidebar %}
<h1>Comments list</h1>
{% if comment_list %}
    <ul>
    {% for comment in comment_list %}
        <p>{{ comment.author }} ({{ comment.comment_date }}) {{ comment.description|safe }}</p>
    {% endfor %}
    </ul>
{% else %}
    <p>There are no comments.</p>
{% endif %}
{% endblock %}

模型.py

class Comment(models.Model):
    description = models.TextField()
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    comment_date = models.DateTimeField(auto_now_add=True, null=True)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)

    class Meta:
        ordering = ["-comment_date"]

    def __str__(self):
        return "{}".format(self.description)

DB有评论,但在页面上显示“没有评论”。如何从 ech url 的基本模板中调用它?

标签: pythondjango

解决方案


你不能这样做。一个 URL 映射到一个视图,一个 URL 不能有多个视图。

如果您需要在每个页面的基本模板中填充侧边栏,则需要使用自定义模板标签:包含标签可能就是您想要的。


推荐阅读