Переход на другую страницу без обновления [Django]

Как добиться перехода на другую страницу без обновления после, например, щелчка по ссылке на другой URL. Другие примеры, у меня есть список книг, и когда я нажимаю на одну из книг, она перенаправляет меня на страницу выбранной книги. Вот пример кода ссылки. <a class="link" href="{% url 'books:view_book_detail' obj.book.name obj.pk %}">View book</a>

Я знаю о history.pushState(), но как его использовать? Можно ли его использовать с URL из Django. Есть ли другие методы, кроме указанных?

Использование обычного django или простого javascript недостаточно эффективно для этой цели.

Для таких сценариев обычно используются современные JavaScript-фреймворки, такие как React, Angular, Vue и т.д.

Но все же не исключено, что это можно сделать и без JS-фреймворков. Один из подходов, который вы можете использовать - это использование AJAX.

Вы можете создать base.html, который будет нашим основным шаблоном, а затем разбить приложение на маленькие компоненты, такие как home.html, product-list.html, view-product.html. Которые мы можем включить в приложение в соответствии с нашими требованиями.

{% include 'view-product.html' with product=product_object %}
(что-то вроде этого)

Сделайте AJAX-запрос к /view_product/<id>/, который должен вернуть JsonResponse о том, какой компонент следует отобразить. И с помощью JavaScript мы сможем загрузить этот конкретный компонент.

Но опять же, ЭТО НЕ ХОРОШАЯ ПРАКТИКА, я бы рекомендовал использовать JavaScript фреймворки для одностраничных приложений.

Я сделал это, используя множество операторов if в view.py вам нужно использовать вместо , и проверить, имеет ли POST запрос это имя, чтобы ответить с другим контекстом, также вам нужно использовать операторы if в шаблоне, чтобы обновить фронтенд в соответствии с ответом. Но я согласен с @Vaibhav, это плохая практика, настоятельно рекомендуется использовать JS фреймворк для одностраничного приложения

Вернуться на верх