0

作为一项测试,我决定看看我是否可以让 hashchange 导航技巧想想与我的 django 应用程序一起工作......

到目前为止,我在哈希更改触发的阶段拥有它,只需要加载数据,这就是我遇到问题的地方。

现在,我是 django 和 django/ajax 的新手,我不知道从哪里开始,做了几个 google 并没有运气。简而言之,我需要一种使用扩展语法在没有模板的情况下加载页面的方法。我是否能够将附加值解析到 url 并将其从模板中排除?我不确定

请给一些代码指导什么的

4

1 回答 1

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 库,请查看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")
于 2012-08-10T22:32:53.660 回答