Django:从模板调用数据库查询

Eli*_*Eli 3 django templates

我有一个 Django 网站,它有一个侧边栏,其中有各种不同的框,可以根据页面的不同进入其中。例如,“最新评论”或“最新推文”或“精选故事”。这些框都需要数据库查询才能运行。

我可以简单地添加most_recent_comments 以及每个页面的视图所需的任何其他变量。但这感觉很脆弱。我希望能够通过编辑模板来移动和更改框。

所以我的另一个想法是我可以使用上下文处理器将所有框可能需要的所有变量添加到每个页面,但是 ORM 是否足够智能,只能对实际使用这些变量的页面运行查询?或者即使我的页面上没有框,它也会访问数据库吗?

所以我想我想要的是某种自定义标签,我可以只说 {% most_recent_comments_box %} 并且它足够聪明,可以从数据库加载它需要的任何变量,然后调用一个小模板文件。这是正确的方法吗?我该如何做到这一点?

Ism*_*awi 5

这是自定义模板标签的用例阅读这篇文章(由 Django 背后的人之一撰写)。

自那篇文章撰写以来,Django 的一项新增功能是包含标签快捷方式,它实现了您提到的“调用一个小模板文件”方法。