Django - 字典键和值不显示在模板中

时间:2016-03-10 03:00:26

标签: python django dictionary web

我正在尝试使用Django构建一个简单的博客,并尝试显示博客帖子以及与帖子相关的评论数量。不幸的是,我在使用字典打印出值时遇到了麻烦 - 或者,至少在我想要的地方。

在我的views.h文件中:

class IndexView(generic.TemplateView):
    template_name = 'blogs/index.html'
    num_comments = { }

    def get_blogs(self):
        """
        Returns the last 5 published blog posts.
        """
        blogs = BlogPost.objects.filter(
            pub_date__lte = timezone.now()    
        ).order_by('-pub_date')[:5]

        for blog in blogs:
            # Setting our num_comments dictionary by getting
            # the number of comments from a particular blog post
            self.num_comments[blog.id] = len(Comment.objects.filter(blog_post = blog.id))

        return blogs

在我的index.html文件中:

{{ view.num_comments }}
{% if view.get_blogs %}
    {% for blog in view.get_blogs %}
        <div>
            <h1>{{ blog.post_title }}</h1>
            <p>{{ blog.post_text }}</p>
            <ul>
                {{ blog.id }}
                {{ view.num_comments }}
                {% for key, value in view.num_comments %}
                <li>
                        {{ key }} <-- Does not display
                        {{ value }} <-- Does not display
                </li>
                {% endfor %}
            </ul>
        </div>
    {% endfor %}
{% else %}
    <p>No blogs are available.</p>
{% endif %}

在我明确调用{{ view.num_comments }}的地方,正在显示正确的字典。知道为什么我的字典没有正确获得密钥和值对吗?感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用.items()方法来访问键和值对:

{{1}}

另见Django documentation中的第三个例子。