7

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

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

有什么建议么?

4

2 回答 2

7

您应该使用专为此类事情构建的django-pjax 。

您所要做的就是在基本模板中包含整个页面或仅block content基于请求是否为 ajax。

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

于 2011-07-01T10:23:48.983 回答
3

当 AJAX 看到东西时,模板标签{% block content %}之类的东西早已不复存在。您要做的是<div>在您的内容块中创建一个命名,例如:

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

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

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

whereurl是您要加载的 URL(预期返回 HTML),data是表单数据(如果有;可以省略),并且loadComplete是加载数据时要调用的可选函数,并且是 form function loadComplete(responseText, textStatus, XMLHttpRequest) {...}。即使您不想使用 jQuery,您也可以获取未缩小的 jQuery 源代码,看看他们是如何做到的。

于 2011-07-01T10:23:59.967 回答