2012-08-10 142 views
0

作爲一個測試,我已經決定看看我是否能得到hashchange導航伎倆覺得跟我的Django應用程序的工作...Django的AJAX導航

到目前爲止,我有它的階段,散變化觸發器和只需要加載數據,這是我有問題的地方。

現在,我是django和django/ajax的新手,我不知道從哪裏開始,做了幾個Google,但沒有運氣。簡而言之,我需要一種方法來加載沒有使用擴展語法的模板的頁面。我會只能解析url的附加值並將其從模板中排除?林不知道

請給一些代碼的指導或東西

回答

0

你的模板建立了一個發送到瀏覽器的HTML,一旦到達客戶端模板不能使該網頁上的變化,該網頁將需要重新加載模板以進行任何更改。所以當你觸發哈希變化時,你的選擇是讓你想要加載的信息作爲頁面的一部分被隱藏,這意味着你必須知道用戶在頁面加載時需要的所有東西,或者使用AJAX。使用AJAX,我們可以在不重新加載頁面的情況下進行更改,當用戶通過使用Javascript創建XMLHttpRequest來向我們提供新信息時,不必返回XML,它可以是JSON或甚至只是一個單獨的文本字符串。所以當你的哈希變化觸發時,你會發送一個請求到站點,通常是一個GET或POST,並且站點上的一個腳本將處理從客戶端發送的信息並作出相應的響應。下面是這將是改變觸發功能

data = "somedata"; 
request = new XMLHttpRequest(); //create the request object 
request.open("POST", "app/handler", false); // set its parameters 
request.send("data="+data); // send it to the server 
response = request.responseText; // get the response 
responseHandler(response) // do something with the data the server sent back 

在服務器端,這裏面可能是應用程序的唯一目的的例子。所有格式都可以使用基本模板,javascript和css來完成。只需在每次響應後加載新信息。 Django有一些AJAX庫,請查看the wiki page或查看django.core.serialization,它將讓您將應用程序模型作爲json,xml或yaml返回。

from django.core import serializers 
def my_json_view(request): 
    data = serializers.serialize("json", MyModel.objects.all()[:5]) 
    return HttpResponse(data, mimetype="application/javascript")