【发布时间】:2018-06-05 20:48:07
【问题描述】:
我正在努力在 Django 中使用组件。
我的项目: 我正在开发一个展示当前博客文章的博客。在侧边栏中,我想包含一个组件,其中列出了十个最新帖子和十个相关帖子。这些组件中的每一个不仅是模板,而且还包含逻辑(我宁愿不使用模板标签将其包含在模板中)。
包含此类组件的最佳方法是什么?
【问题讨论】:
我正在努力在 Django 中使用组件。
我的项目: 我正在开发一个展示当前博客文章的博客。在侧边栏中,我想包含一个组件,其中列出了十个最新帖子和十个相关帖子。这些组件中的每一个不仅是模板,而且还包含逻辑(我宁愿不使用模板标签将其包含在模板中)。
包含此类组件的最佳方法是什么?
【问题讨论】:
如果您使用 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 %}
如果您在多个页面上需要此信息,可以考虑通过上下文处理器添加它们。
【讨论】: