我正在尝试使用 AJAX 创建站点导航。我有导航菜单,其中包含指向不同视图的链接({% url name %}
在模板中使用)。我想做的是使用 AJAX 加载页面内容。我尝试加载的页面内容包含在内容块 ( {% block content %}
) 中。
我还找到了这个片段http://djangosnippets.org/snippets/942/,但我想使用我已经定义的视图并且只使用 ajax 获取内容。
有什么建议么?
我正在尝试使用 AJAX 创建站点导航。我有导航菜单,其中包含指向不同视图的链接({% url name %}
在模板中使用)。我想做的是使用 AJAX 加载页面内容。我尝试加载的页面内容包含在内容块 ( {% block content %}
) 中。
我还找到了这个片段http://djangosnippets.org/snippets/942/,但我想使用我已经定义的视图并且只使用 ajax 获取内容。
有什么建议么?
您应该使用专为此类事情构建的django-pjax 。
您所要做的就是在基本模板中包含整个页面或仅block content
基于请求是否为 ajax。
django-pjax 使用 jQuery 进行 AJAX 调用并使用 HTML5 推送状态 API 操作历史记录,这是一种非常好的方法,并且在 IE 旧版本中也可以优雅地降级。
当 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 源代码,看看他们是如何做到的。