在Django中使用AJAX进行页面切换

时间:2011-07-01 10:09:16

标签: python django pjax

我正在尝试使用AJAX创建网站导航。我有导航菜单,其中包含指向不同视图的链接(在模板中使用{% url name %})。我想要做的是使用AJAX加载页面内容。我尝试加载的页面内容包含在内容块({% block content %})中。

我也找到了这个代码段http://djangosnippets.org/snippets/942/,但我想使用我已定义的视图,只使用ajax获取内容。

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

你应该使用专为这类事情而构建的django-pjax

您只需要在基本模板中包含整个页面,或仅根据请求是否为ajax来block content

django-pjax使用jQuery进行AJAX调用,并使用HTML5推送状态API处理历史记录,这是一种非常好的方法,并且在IE旧版本中也可以优雅地降级。

答案 1 :(得分:3)

{% block content %}这样的模板标签早在AJAX看到的时候就已经消失了。您要做的是在内容块中创建一个名为<div>的内容,例如:

{% block content %}
<div id="content"></div>
{% endblock content %}

然后你可以使用类似这样的(jQuery)代码在需要时加载<div>

$("#content").load(url, data, loadComplete);

其中url是您要加载的网址(预期返回的HTML),data是表单数据(如果有的话;可以省略),loadComplete是可选的加载数据时要调用的函数,格式为function loadComplete(responseText, textStatus, XMLHttpRequest) {...}。即使你不想使用jQuery,你也可以获得非缩小的jQuery源代码,看看他们是如何做到的。