Переход на другую страницу без обновления [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 фреймворк для одностраничного приложения