如何在Django中加载不同内容的块

时间:2012-12-22 16:40:24

标签: django django-templates django-views

在Django中,如果我有一个页面可以说包含以下几个块:

1)主要内容
2)相关内容
3)新文章
4)广告块
5)全站标签云

我应该在视图中为这些块准备所有数据,然后通过上下文将其传递给模板吗?如果我这样做,每次我需要在某个页面上有一个块时,我需要在视图中为它准备数据。但是,如果我想在网站的每个页面上放置一个新文章块怎么办?这意味着我需要在每个视图中为此块准备数据并将其传递给模板,模板不是很干。

我看到的另一个选项是创建一个模板标签,它可以查询数据库并获取最新文章,你只需要在你需要的每个模板上使用这个标签,但据我所知,这是违反主要指导原则,它指出标签应该仅用于显示目的(在模板标签中进行数据库查询是不合适的。)

你在使用/推荐哪种方式在Django中显示块?

1 个答案:

答案 0 :(得分:0)

您在哪里读到不应该使用模板标签?相反,这正是你应该使用它们的原因。 Here例如是来自Django的早期开发人员之一的James Bennett的博客条目,正是如此描述(注意该条目中的语法已经过时,但原则仍然有效)。