【发布时间】:2011-11-18 03:18:50
【问题描述】:
我有一个模板,它最终会输出大约 700 个输入元素,如下所示:
<input class="ticket" size="3" maxlength="15" type="text" name="{{ ticket.id }}">
连同调用视图函数和渲染模板(生成 HTML,但不计算浏览器渲染时间),大约需要 1.5 秒。我正在优化模板以查看花费时间最长的内容,因为还有很多其他更复杂的事情正在发生……我意识到如果我删除了 {{ ticket.id }} 部分,渲染时间会下降到 ~0.48 秒。我什至在票模型上做了一个函数:
def get_input_name(self): return str(self.id)
并替换了模板中的行:
<input class="ticket" size="3" maxlength="15" type="text" name="{{ ticket.get_input_name }}">
这产生了相同的输出,大约为 0.52 秒。
为什么调用{{ ticket.id }} 这么慢?
【问题讨论】:
-
可能是因为它进行了额外的 SQL 调用,虽然不太确定,但尝试使用类似 pypi.python.org/pypi/django-debug-toolbar-django13/0.8.4 的东西进行分析
-
您使用的是什么后端,您的票证模型中有多少行?
-
@nicolas:postgresql,我的票证模型中有 10 个字段
-
@Claudiu:例如,您是否对 sqlite 有此问题?
-
@nicoals:不确定,我只用 postgresql 试过
标签: django performance optimization django-models django-templates