Переключение страниц с использованием AJAX в Django - PullRequest
5 голосов
/ 01 июля 2011

Я пытаюсь создать навигацию по сайту с помощью AJAX.У меня есть меню навигации со ссылками на различные виды (используя {% url name %} в шаблоне).Я пытаюсь загрузить содержимое страницы с помощью AJAX.Содержимое страницы, которое я пытаюсь загрузить, заключено в блок содержимого ({% block content %}).

Я также нашел этот фрагмент http://djangosnippets.org/snippets/942/,, но я хочу использовать уже определенные представления и получить толькосодержание с использованием ajax.

Есть предложения?

Ответы [ 2 ]

6 голосов
/ 01 июля 2011

Вы должны использовать django-pjax , который создан именно для такого рода вещей.

Все, что вам нужно сделать, это включить в базовый шаблон всю страницу или только block content в зависимости от того, является ли запрос ajax или нет.

django-pjax выполняет вызовы AJAX с использованием jQuery и манипулирует историей с помощью HTML5 API состояния состояний, что является очень хорошим способом сделать это, а также изящно ухудшает работу в старых версиях IE.

3 голосов
/ 01 июля 2011

Теги шаблонов, такие как {% block content %}, давно исчезли, когда AJAX видит вещи.Что вы хотите сделать, это создать именованное <div> в вашем блоке контента, например:

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

Затем вы можете использовать что-то вроде этого (jQuery) кода для загрузки <div> при необходимости:

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

, где url - это URL-адрес, который вы хотите загрузить (HTML ожидается в ответ), data - это данные формы (если есть; могут быть опущены), а loadComplete - дополнительная функция длявызывается при загрузке данных и имеет вид function loadComplete(responseText, textStatus, XMLHttpRequest) {...}.Даже если вы не хотите использовать jQuery, вы можете получить не минимизированный исходный код jQuery и посмотреть, как они это делают.

...