首页 > 解决方案 > 在 Django 框架中使用组件

问题描述

我正在努力在 Django 中使用组件。

我的项目:我正在开发一个展示当前博客文章的博客。在侧边栏中,我想包含一个组件,其中列出了十个最新帖子和十个相关帖子。这些组件中的每一个不仅是模板,而且还包含逻辑(我宁愿不使用模板标签将其包含在模板中)。

包含此类组件的最佳方法是什么?

标签: pythondjango

解决方案


如果您使用 Django 的基于类DetailView来显示您的博客文章,您可以添加额外的信息以在您的模板中使用get_context_data(),例如:

class BlogPostDetailView(DetailView):

    model = BlogPost

    def get_context_data(self, **kwargs):
        context = super(BlogPostDetailView, self).get_context_data(**kwargs)
        context['recent_posts'] = BlogPost.objects.filter(...)
        context['related_posts'] = BlogPost.objects.filter(...)
        return context

然后,您可以在模板中使用此信息,如下所示:

{% for related_post in related_posts %}
    ...
{% endfor %}

如果您在多个页面上需要此信息,您可以考虑通过上下文处理器添加它们。


推荐阅读