[問題] Django html table (更新問題)
大家好
其實不太確定這問題適不適合在這邊問,
如果有更適合的板請指引一下,謝謝
我最近用Django寫了一個小網站,
其中有個html table會依據使用者不同的選擇
產出資料(我用list) 然後跑個for loop把資料放進表格裡
{% for label in results %}
<tr ><td >{{ label}}</td>
{% endfor %}
但效率實在是很差,當我的list有超過三千個items時
就要等個五六秒網頁才開得出來
偏偏有很多時候我的list可能會有超過兩三萬個結果
一開始我以為是我在產出資料的function效率太差
不過測試了一下最糟的情況也只需要零點八秒,目前也在想辦法把這個搜尋時間減短
所以我想問題應該是出在用for loop把資料放進表格裡太慢
想請問有沒有什麼比較有效率的方法可以populate the table?
還是其實問題不是出在這邊?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.190.252.2
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1456461962.A.12F.html
→
02/26 15:07, , 1F
02/26 15:07, 1F
推
02/26 16:22, , 2F
02/26 16:22, 2F
推
02/26 16:55, , 3F
02/26 16:55, 3F
→
02/26 18:13, , 4F
02/26 18:13, 4F
→
02/26 18:13, , 5F
02/26 18:13, 5F
→
02/26 18:17, , 6F
02/26 18:17, 6F
推
02/28 16:36, , 7F
02/28 16:36, 7F
更新:
依 uranusjr 大的建議,我用 simple tag 把 loop 拉回 python跑
在 html 中把 for loop 改成:
<table>
{% autoescape off %} {% populate_table results%}{% endautoescape %}
</table>
然後 register.simple_tag 的內容就類似 uranusjr 大提供的範例。
但測試之後發現結果還是不是很令人滿意,
len(list) simple tag | for loop in html
--------------|------------|-------------------
15 | < 4.5s | < 2.5s
--------------|------------|-------------------
150 | < 4.5s | < 2.5s
--------------|------------|-------------------
2,500 | < 5s | < 4.5s
--------------|------------|-------------------
260,000 | < 1.2 min | about 2.8 min
--------------|------------|-------------------
也就是說在有超級長的 list 時,simple tag 效能確實好很多,
但是就算 list 內容很少的時候,還是必須花到四秒鐘以上,
完全比不上原本的方法的效能,這實在讓我很困擾@@
不知道各位還有沒有什麼其它建議?
謝謝
※ 編輯: gbllggi (108.58.165.58), 03/09/2016 05:18:43
→
03/12 14:50, , 8F
03/12 14:50, 8F
→
03/12 14:50, , 9F
03/12 14:50, 9F
→
03/12 14:50, , 10F
03/12 14:50, 10F