1

我有时通过为 Django 标签提供“takes_context=True”来访问上下文;通常用于访问请求。

但是是否存在性能影响。

我对模板如何工作的心智模型是标签功能组装代表模板的节点,然后这些节点可以在不重新创建节点或重新解析模板的情况下呈现内容。

但是可以肯定的是,如果可以使标记函数返回不同的节点,这取决于上下文中的某事,那么每次上下文不同时(IE 每次)都必须重新创建节点。

要么是这样,要么你被第一次获得的节点所困扰,在这种情况下,你不应该根据上下文中的任何内容返回节点(在这种情况下,有什么意义?)。

有人可以帮我解决这个问题吗?我使用 Django 1.4.2。

4

1 回答 1

1

加载模板时会创建节点。当它被渲染时,上下文被简单地传递给节点的渲染方法。simple_tag参数的唯一区别takes_context是使生成的Node.render代码将上下文传递给您的函数。所以不,使用takes_context.

于 2012-12-16T18:03:26.837 回答