作为测试,我决定看看我是否可以获得哈希更改导航技巧,想想使用我的 django 应用程序......
到目前为止,我处于哈希更改触发的阶段,只需要加载数据,这就是我遇到问题的地方。
现在,我是django和django/ajax的新手,我不知道从哪里开始,做了一些谷歌搜索,但没有运气。简而言之,我需要一种方法来使用扩展语法在没有模板的情况下加载页面。我是否能够将附加值解析为 url 并将其从模板中排除?我不确定
请给出一些代码指导或其他东西
您的模板创建发送到浏览器的 html,一旦它到达客户端,您的模板就无法在该页面上进行更改,需要重新加载页面才能使模板进行任何更改。因此,当触发哈希更改时,您的选择是将要加载的信息作为页面的一部分,但被隐藏,这意味着您必须知道页面加载时用户需要的所有内容,或者使用 AJAX。使用AJAX,当用户通过使用Javascript发出XMLHttpRequest向我们提供新信息时,我们可以在不重新加载页面的情况下进行更改,Javascript不必返回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库,请查看wiki页面或查看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")