2014-07-26 129 views
0

我對Django來說很新,我正在一個站點上工作,我希望用戶能夠根據對象的時間戳過濾出對象。我可以輕鬆地在views.py中進行過濾並重新加載模板,但我應該如何過濾客戶端?Django客戶端過濾

難道是一個好主意,只是加載了一切:

{% for obj in all_objects %} 
    <p>{{obj.time}}</p> 
{% endfor %} 

,然後使用JavaScript來隱藏和顯示相關的對象?我不希望超過1,000個對象。

我看過這個: http://dustindavis.me/dynamic-filtered-drop-down-choice-fields-with-django.html 和作者說他會使用AngularJS而不是定製的AJAX解決方案。

Angular是我最好的選擇還是其他框架更容易與Django集成?

回答

1

您不需要像Angular這樣的整個框架來過濾結果,但我肯定會推薦使用其中一種流行的MVC框架。 然而,如果你走這條路線,你將會大大地改變你的django應用程序的體系結構,因爲Angular等實際上是爲單頁面應用程序構建的,並且如果你的django項目暴露了API而不是呈現HTML,那麼它將最適合你。儘管如此,爲了解決您的問題,我會繼續使用相同的django模板,並將列表的內容加載到隱藏的HTML元素中。 然後在您的頁面的Javascript代碼中,您可以根據用戶選擇從列表中提取相關項目。不過,該代碼完全是Javascript。

作爲提示,我將使用django模板插入過濾參數作爲隱藏HTML標記的數據屬性。舉個例子:

{% for obj in all_objects %} 
    <p data-time='{{obj.time}}' data-somefilter='{{obj.somefiter}}'>{{obj.time}}</p> 
{% endfor %} 

這樣你就可以很容易地使用jQuery選擇過濾基於需求的數據,然後拷貝過來的結果,可見HTML部分,在那裏你顯示過濾列表