[问题] Django html table (更新问题)

楼主: gbllggi (gbllggi)   2016-02-26 12:45:13
大家好
其实不太确定这问题适不适合在这边问,
如果有更适合的板请指引一下,谢谢
我最近用Django写了一个小网站,
其中有个html table会依据使用者不同的选择
产出资料(我用list) 然后跑个for loop把资料放进表格里
{% for label in results %}
<tr ><td >{{ label}}</td>
{% endfor %}
但效率实在是很差,当我的list有超过三千个items时
就要等个五六秒网页才开得出来
偏偏有很多时候我的list可能会有超过两三万个结果
一开始我以为是我在产出资料的function效率太差
不过测试了一下最糟的情况也只需要零点八秒,目前也在想办法把这个搜寻时间减短
所以我想问题应该是出在用for loop把资料放进表格里太慢
想请问有没有什么比较有效率的方法可以populate the table?
还是其实问题不是出在这边?
谢谢
作者: Neisseria (Neisseria)   2016-02-26 15:07:00
可以用浏览器的 developer tools 看那段程式最花时间
作者: Falldog (Yo)   2016-02-26 16:22:00
用django debug toolbar看看吧 说不定是query太多次
作者: stupidgod08 (笨神)   2016-02-26 16:55:00
建议分页或cache或配合api用javascript生成
作者: uranusjr (←這人是超級笨蛋)   2016-02-26 18:13:00
Django Template 的 for loop 确实有可能有效能问题可以改用 simple tag 直接用 Python 产出 table content通常效能就会够好了, 类似这样 http://d.pr/n/1bKpX
作者: icycandle (两栖作战太空鼠)   2016-02-28 16:36:00
ajax & js render +1 只是这样就不好用 debugtoolbar
作者: uranusjr (←這人是超級笨蛋)   2016-03-12 14:50:00
因为解析 simple tag 需要 load external register, 会对 startup time 有影响, 如果仍然不能接受就只能拉到view 里面做, 或者改用 Jinja2 来处理这个 template 了

Links booklink

Contact Us: admin [ a t ] ucptt.com