当我使用 django 1.4 的默认模板系统渲染一个中等复杂的字典(4 级深度,~2K 数据点)时,模板渲染步骤需要超过 2800 毫秒。当我直接从 python 执行 html-gen 时,它需要大约 80 毫秒。即使使用另一个模板库 ( jinja2 ) 也可以在 300 毫秒内呈现相同的数据(实际上,几乎完全相同的模板语法 - 因为 jinja2 几乎是一个替代品)。
有趣的是,您甚至不必在模板中实际渲染字典即可在 django 的模板系统中导致此性能问题……您所要做的就是将其作为可用变量传递给模板。我的一个朋友建议这可能意味着系统是,“......做一个防御性副本或(更愚蠢的)一个理解 [which] 由于运行构造函数而需要时间”
任何人都知道为什么 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
})
)