2016-07-22 58 views
0

我以下的建議:Refresh <div> element generated by a django templateDjango的{%URL%}與參數(http://stardict.sourceforge.net/Dictionaries.php下載列表)

我沿着幾個變量路過,一拉:

url: '{% url 'search_results' 'sched_dep_local' flights|escapejs %}', 

問題是「航班」是,search_results模板需要訪問類型的字典列表,這是相當大的,包含的東西像省略號

[{'foo': 'bar'}, {'foo': 'baz'}] and so on 

這樣我就可以{%URL%}用它的唯一的方式出現s到與escapejs擺脫撇號,但隨後在views.py,我需要它再次成爲類型的字典列表,這樣我就可以做這樣的事情:

def search_results(request, sort_key, flights): 
    flights = search_utils.sort(flights, sort_key) 
    return render_to_response('search_results.html', { 'flights' : flights})                                  

有沒有一種簡單的方法來做這個?或者,我是否全部都是錯誤的?

ETA:參見(解釋什麼,我試圖做的,爲什麼):

<script> 
$(".sort").on("click", function() { 
    $.ajax({ 
     url: '{% url 'search_results' 'sched_dep_local' flights|escapejs %}', 
     success: function(data) { 
      $('#search-results').html(data); 
     } 
    }); 
}); 
</script> 

我有一個模板(在search_results.html),打印在機票每個航班的一些數據。我想對這些數據進行排序並重新提交模板,但我無法弄清楚。

+1

爲什麼你需要將一個字典列表作爲變量傳遞給url?無論你想要達到什麼目標,我確信有更好的方法。 – knbk

+0

發佈更新了細節。你能推薦一個更好的方法嗎? – ballardjw2

回答

0

這不是處理複雜數據的正確方法。與其通過URL發送它,您應該使用POST並將其發送到請求的主體中:由於您使用的是jQuery,因此您可以在該調用中執行method: "POST"。在後端,你可以從JSON反序列化它。

但是,這樣做似乎有點奇怪;數據顯然已經來自Django後端,所以目前還不清楚爲什麼你想把它發佈到那裏。

+0

我希望能夠單擊按鈕並對數據進行排序而無需刷新頁面。我找不出任何更好的方法來做到這一點。 – ballardjw2

+0

爲什麼你需要將它發送給Django進行排序? Javascript完全有能力對數據進行排序。 –

+0

問題不在於排序。這是刷新模板。我需要重新呈現使用排序數據的模板。 – ballardjw2