Приложение, упрощающие клиент-серверное взаимодействие с использованием Ajax
Это подключаемое приложение для Django позволяет ускорить и упростить разработку проектов, в которых используется Ajax-запросы.

На клиентской стороне трудится htmx — продолжатель традиций библиотеки intercooler.js.
На серверой стороне siteajax предоставляет полезные инструменты для обработки клиентских запросов.

Рассмотрим простой пример.

Где-то в файле с представлениями (обычно views.py):

    from django.shortcuts import render
from siteajax.toolbox import ajax_dispatch


def get_news(request):
news = ... # Допустим, что взяли из базы данных объекты новостей.
# Тут мы могли бы обратиться к request.ajax за дополнительными
# свойствами запроса или даже управлять некоторыми аспектами
# клиента при помощи siteajax.toolbox.AjaxResponse, однако
# для демонстрации достаточно будет просто вернуть страницу.
return render(request, 'sub_news.html', {'news': news})

@ajax_dispatch({
# Здесь укажем соответствие id html-элемента, порождающего
# ajax-запрос, функции обработчику.
'news-list': get_news,
})
def index_page(request):
"""Это представление - точка входа.
Оно может и отрисовать главную страницу
и обслужить ajax-запрос новостей.

"""
return render(request, 'index.html')

Теперь добавим шаблон главной страницы index.html:

    <!DOCTYPE html>
< html>
<head>
<!-- Берём клиентскую js библиотеку из CDN. -->
{% include "siteajax/cdn.html" %}
< /head>
<body>
<div id="news-list" hx-get hx-trigger="load">< /div>
<!-- Содержимое элемента div будет заменено
списком новостей, который будет автоматически подгружен
с сервера при помощи ajax после прогрузки страницы.
Обратите внимание на hx-* атрибуты, которыми
управляется библиотека htmx.
Заметьте как значение из id="news-list" используется
в декораторе @ajax_dispatch (см. код на Питоне выше). -->
< /body>
< /html>

И осталось лишь накидать небольшой шаблон для списка новостей sub_news.html.
В нём нет совершенно ничего особенного:

    {% for item in news %}<div>{{ item.title }}< /div>{% endfor %}

Наша страница с ajax-запросом готова.

На заметку
За более подробным описанием и примерами работы с siteajax обратитесь к документации siteajax (англ.). Описание и примеры работы с htmx можно найти на официальном сайте библиотеки — https://htmx.org/ (англ.).

Категории

Окружение
Проект

На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.