我有一个Django站点,其中有一个侧边栏,包含不同的框,具体取决于页面。例如,“最近的评论”或“最新推文”或“特色故事”。这些框都需要运行数据库查询。
我可以简单地为每个页面向视图添加most_recent_comments和其他所需变量。但这感觉很脆弱。我想能够通过编辑模板来移动和更改框。
所以我另一个想法是,使用Context Processor将所有框可能需要的变量添加到每个页面中,但ORM是否足够聪明,只运行实际使用这些变量的页面的查询?或者即使页面上没有框,它也会访问数据库?
所以我认为我想要的是某种自定义标记,我只需要说{% most_recent_comments_box %},它就足够聪明,从数据库加载所需的任何变量,然后调用一个小模板文件。这是正确的方法吗?我该如何实现?
我可以简单地为每个页面向视图添加most_recent_comments和其他所需变量。但这感觉很脆弱。我想能够通过编辑模板来移动和更改框。
所以我另一个想法是,使用Context Processor将所有框可能需要的变量添加到每个页面中,但ORM是否足够聪明,只运行实际使用这些变量的页面的查询?或者即使页面上没有框,它也会访问数据库?
所以我认为我想要的是某种自定义标记,我只需要说{% most_recent_comments_box %},它就足够聪明,从数据库加载所需的任何变量,然后调用一个小模板文件。这是正确的方法吗?我该如何实现?