[問題] 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