2012-08-10 66 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")