2012-04-17 24 views
1

快问家伙,Django的Templatetag装载

只是说我有下面的代码:

 {% for i in c.targetItems %} 
     <tr> {% include "transfers/matching/_process_match_format.html" %} </tr> 
     {% endfor %} 

在“_process_match_format.html”我使用的是自定义的模板标签。我必须在这个包含文件中加载它,而不是它的父页面,否则它似乎不可用。 django是否只加载一次自定义标签,或者是否在循环的每次传递都加载它?

此外,有没有办法在父页面加载标签,并使其可用于任何包括?

回答

0

根据Django docs:“这意味着在包含的模板之间不存在共享状态 - 每个包含都是完全独立的呈现过程。”似乎每次调用include都会加载标签。

有加载标签的所有模板的方式,你需要将它们添加到内置的模板标签:Load a Django template tag library for all views by default

+1

我主要关注的是,包括在循环的每次传球,而该标签库的内存消耗那么只需在第一遍加载标签库,如果这是有道理的。 – 2012-04-18 01:39:51

+0

我不确定它是否会使用太多的内存,在一个'include'渲染的对象应该被释放并且GC应该在某个时间收集内存之后。我查看了源代码,看起来'include'和'render_to_string'类似。主要问题将是速度不记忆恕我直言。 – demalexx 2012-04-18 09:40:27