Найти - Пользователи
Полная версия: Джанго и AJAX-навигация
Начало » Django » Джанго и AJAX-навигация
1
moonsly
Приветствую.
Есть задача - сделать сайт на джанге с AJAX-навигацией. Конкретно -
1) при переходе по страницам перегружать только main content , шапку не перезагружать
2) для некоторых страниц возможна ajax-загрузка отдельных элементов страницы (типа, список пунктов меню, сделанный как темплейт-тэг)
3) обрабатывать по аяксу некоторые формы, чтобы при этом минимально пришлось допиливать/дублировать их стандартную валидацию
4) аякс-навигация с хеш-ссылками #!/home, поддержка вперед/назад в браузерах , одна из проблем - history.js не поддерживает ИЕ
5) для поисковиков оставить обычную статическую навигацию , обязательное условие - видимость всех страниц с аякс-навигацией для поисковиков
Возможное решение для клиентской части:
http://habrahabr.ru/post/123972/ , т.е. доработанный jquery-pjax: http://github.com/defunkt/jquery-pjax
Основной вопрос - на сервере нужно отделять AJAX-запросы от обычных (либо по доп. параметру &ajax=1, либо по заголовкам, как в jquery-pjax) - для аякса отдавать только часть страницы.

Вопросы:
1) есть ли что-то готовое для джанги , или все лучше решать ручным допиливанием (определение доп. параметра/заголовка в каждом запросе итд)? как лучше архитектурно это решить?
2) по поводу определения поисковиков, перенаправления их на статическую навигацию - по какому критерию можно с высокой вероятностью определить робот поисковика, чтобы отдать ему статическую ссылку?
достаточно ли отключенного JS? где-то читал, что гуглбот частично парсит JS
3) поделитесь плз опытом, кто делал что-то подобное на джанге
Спасибо
Fibio
if request.is_ajax():
    do something
по поводу отпределения статической навигации, может и костыль, но я делала так:
шаблон1 - послностью рендерит страницу с контентом, заменяющийся контент: {% include content.html %}
шаблон2 == content.html
декоратор по типу django-annoying render_to, короче работает также, но внутрь еще вклеила проверку на тип запроса, и в случае если запрос аяксовый - отдаем шаблон2 иначе отдаем шаблон1

Если у вас шаблон1 == base.html, т.е. менюха, шапка и футер, то можна просто юзать шаблон2 а при ответе на неаяксовый запрос прямов в декораторе превращать шаблон2 в “{% extends ”base.html“ %} {% block content %} сюда вставляетм шаблон2 {% end block %}” как работать с шаблонами: https://docs.djangoproject.com/en/dev/ref/templates/api/#using-the-template-system
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB