我正嘗試使用AJAX創建站點導航。我有導航菜單,包含指向不同視圖的鏈接(在模板中使用{% url name %}
)。我想要做的是使用AJAX加載頁面內容。我嘗試加載的頁面內容包含在內容塊({% block content %}
)中。在Django中使用AJAX切換頁面
我還發現這個片段http://djangosnippets.org/snippets/942/,但我想使用我已經定義的視圖,只使用ajax獲取內容。
有什麼建議嗎?
我正嘗試使用AJAX創建站點導航。我有導航菜單,包含指向不同視圖的鏈接(在模板中使用{% url name %}
)。我想要做的是使用AJAX加載頁面內容。我嘗試加載的頁面內容包含在內容塊({% block content %}
)中。在Django中使用AJAX切換頁面
我還發現這個片段http://djangosnippets.org/snippets/942/,但我想使用我已經定義的視圖,只使用ajax獲取內容。
有什麼建議嗎?
你應該使用django-pjax這是專爲這種事情而建造的。
您只需要在基本模板中包含整個頁面或根據請求是否爲ajax包含block content
。
django-pjax使用jQuery進行AJAX調用,並使用HTML5推送狀態API處理歷史記錄,這是一種非常好的方式,並且在IE舊版本中也能夠正常降級。
這實際上非常酷。謝謝 –
如果它可以與Django 1.2一起使用,它會很棒。 – Paolo
當AJAX看到東西時,像{% block content %}
這樣的模板標籤早已消失。你要做的是創建一個名爲您的內容塊<div>
,如:
{% block content %}
<div id="content"></div>
{% endblock content %}
然後你可以使用這樣的事情(jQuery的)代碼加載<div>
需要的時候:
$("#content").load(url, data, loadComplete);
哪裏url
是你想要加載的URL(HTML期望作爲回報),data
是表單數據(如果有的話;可以省略),loadComplete
是數據加載時要調用的可選函數,形式爲function loadComplete(responseText, textStatus, XMLHttpRequest) {...}
。即使你不想使用jQuery,你也可以得到非縮小的jQuery源代碼,並看看它們是如何實現的。
我知道它已經不存在了,我有一個類似於你所建議的div。我想在這裏做的事情是使用已定義的視圖(這將使用沒有ajax請求),並創建一些響應,將只返回名爲內容塊的內容,以便我可以在JavaScript中處理它,並將div的內容。 –
你用django-pjax解決了嗎? –
基本上我做過。 (對原始腳本進行少量更改以允許我在單個請求中更新多個HTML元素) –