Динамічне фільтрування статей за допомогою AJAX в Django

Динамічне фільтрування статей за допомогою AJAX в Django

4 Березня 2024 в 18:08 27

У розробці веб-додатків часто виникає потреба в реалізації фільтрування контенту без перезавантаження сторінки. Це особливо актуально для сайтів, які мають велику кількість даних, наприклад, новинні або блогові платформи. У таких випадках використання технологій AJAX може значно покращити користувацький досвід, дозволяючи завантажувати та відображати контент динамічно.

Один з типових сценаріїв використання AJAX – це фільтрування даних. У цій статті ми розглянемо, як реалізувати фільтрування статей за допомогою AJAX в фреймворку Django. Для цього ми будемо використовувати JavaScript для взаємодії з сервером без перезавантаження сторінки та Django для обробки запитів і відображення відповідного контенту.

Почнемо з постановки задачі. У нашому Django-проекті ми маємо базовий перегляд, де ми відображаємо всі статті з моделі Article та всі теми з моделі Topic. Нашою метою є забезпечення можливості фільтрування статей за темою. Наприклад, якщо користувач клікає на кнопку “Політика”, то на сторінці відображаються лише статті, які пов’язані з темою “Політика”.

Для досягнення цієї мети ми будемо використовувати AJAX. AJAX (Asynchronous JavaScript and XML) – це технологія, яка дозволяє взаємодіяти з сервером без перезавантаження сторінки. Ми будемо відправляти запити на сервер, отримувати відповідь у форматі JSON і оновлювати вміст сторінки за допомогою JavaScript.

Ось як ми це реалізуємо:

У цьому коді ми визначаємо наш перегляд main_view. Якщо запит є AJAX-запитом, ми отримуємо ім’я теми з параметра запиту topic_name і фільтруємо статті за цією темою. Потім ми повертаємо відповідь у форматі JSON.

У HTML-шаблоні ми відображаємо кнопки для кожної теми і список статей. Кожна кнопка має атрибут data-url, який містить URL для фільтрування статей за відповідною темою.

У JavaScript ми слухаємо подію click для кнопок тем. При кліку ми отримуємо ім’я теми та URL для фільтрування. Потім ми виконуємо AJAX-запит на сервер, передаючи ім’я теми як параметр. Після успішного отримання відповіді ми оновлюємо список статей на сторінці.

Таким чином, ми реалізували динамічне фільтрування статей за допомогою AJAX в Django. Цей підхід дозволяє користувачам зручно вибирати тему та переглядати статті, пов’язані з нею, без перезавантаження сторінки.