我的基本模板中包含一个页脚,其中包含:
{% include "footer.html %}
我需要在每个页面中显示它。但是页脚有几个静态值,每次页面加载时都需要用几个查询来计算。据我所知,这包括不能运行查询,因为调用了任何视图。而且我不想在我的所有观点中复制该查询,我认为这是一个肮脏的解决方案。在这种情况下,最佳做法是什么?我认为这是一个相当普遍的问题。
我的基本模板中包含一个页脚,其中包含:
{% include "footer.html %}
我需要在每个页面中显示它。但是页脚有几个静态值,每次页面加载时都需要用几个查询来计算。据我所知,这包括不能运行查询,因为调用了任何视图。而且我不想在我的所有观点中复制该查询,我认为这是一个肮脏的解决方案。在这种情况下,最佳做法是什么?我认为这是一个相当普遍的问题。
尽管上下文处理器非常适合在每个模板中包含标准内容,但我怀疑出于您的目的,呈现整个页脚的自定义模板标签会是一个更好的选择 - 可能包含标签可以完成这项工作。
如果统计信息是全局的(与特定页面/请求无关),您可以实现自定义上下文处理器,它可以计算统计信息并在上下文中添加相应的变量。可以使用该上下文变量/字典footer.html
来放置统计信息。
请参阅编写自定义上下文处理器
到目前为止这里没有提到的另一个选项是自定义模板标签。取决于您到底想要做什么,上下文处理器可能是矫枉过正。
您可以使用上下文处理器在所有视图中运行您的查询,并使用必要的数据更新您的上下文。
如何创建一个上下文处理器,并从那里返回查询?结果将在每个视图中可用,如果这是您想要的?
您应该编写上下文处理器来解决这个问题: