我有时通过为Django标签提供'takes_context = True'来访问上下文;通常是为了接受请求。
但是有性能影响。
我对模板如何工作的心理模型是标签功能组装代表模板的节点,此后这些节点可以呈现内容而无需重新创建节点,或重新分析模板。
但可以肯定的是,如果标签功能可以返回不同的节点,具体取决于 在上下文中的某些东西,每次上下文不同时都必须重新创建节点(每次都是I.E)。
要不然,或者你被第一次得到的节点所困,在这种情况下你不应该根据上下文中的任何东西返回节点(在这种情况下,重点是什么?)。
有人可以为我清楚吗?我使用的是Django 1.4.2。
答案 0 :(得分:1)
加载模板时会创建节点。渲染时,上下文只是传递给Node的render方法。唯一的区别是simple_tag
的{{1}}参数使得生成的takes_context
代码传递给您的函数。所以不,使用Node.render
没有性能影响。