当我使用django 1.4的默认模板系统渲染一个中等复杂的字典(4级深度,约2K数据点)时,模板渲染步骤需要超过2800毫秒。如果我直接从Python生成HTML,则只需要大约80毫秒。即使使用另一个模板库(如jinja2),也可以在不到300毫秒的时间内呈现相同的数据(实际上,几乎完全相同的模板语法 - 因为jinja2几乎是一种可替换的工具)。有趣的是,您甚至不必在模板中实际呈现字典就能导致django模板系统的性能问题...您只需将其作为可用变量传递给模板即可。我的一个朋友建议这可能意味着系统正在"...进行防御性复制或(更愚蠢的是)理解[这将]由于运行构造函数而花费时间"。是否有人知道为什么django的默认模板系统需要如此长时间才能呈现字典?* 我将在下面添加请求的详细信息 *。我正在调试模式下运行,并将DebugToolbarMiddleware设置为我的中间件类之一。我的settings.py文件包括:
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'django.core.context_processors.request',
)
和……
# rendering like this
return render(
request,
template_name='ltm/search_results.html',
context_instance=RequestContext(request, {
'menus': menus,
'results': result_dict
})
)