Согласно документации Turbolinks 5 для «Последующих перенаправлений» (https://github.com/turbolinks/turbolinks#following-redirects):
Когда вы посещаете местоположение
/one
, а сервер перенаправляет вас в местоположение/two
, вы ожидаете, что адресная строка браузера отобразит перенаправленный URL-адрес.Однако Turbolinks делает запросы, используя
XMLHttpRequest
, который прозрачно следует перенаправлениям. Turbolinks не может определить, привел ли запрос к перенаправлению, без дополнительного взаимодействия с сервером.
И решение для этого состоит в следующем:
отправить заголовок
Turbolinks-Location
в ответ на посещение, которое было перенаправлено, и Turbolinks заменит самую верхнюю запись истории браузера предоставленным вами значением.Движок Turbolinks Rails автоматически выполняет эту оптимизацию для запросов XHR без GET, которые перенаправляют с помощью помощника
redirect_to
.
Я очень заинтересован в использовании Turbolinks в моем проекте Django (1.11), и мне интересно, может ли кто-нибудь указать мне правильное направление, как создать новую функцию Django redirect() или изменить существующую, чтобы всегда включать Turbolinks -Заголовок Location, который необходим для того, чтобы перенаправления функционировали должным образом. Я определенно не хочу вручную устанавливать этот заголовок каждый раз, когда делаю перенаправление.
Аналогичная запись есть в разделе «Перенаправление после отправки формы» (https://github.com/turbolinks/turbolinks#redirecting-after-a-form-submission) Я также был бы признателен за любую помощь в понимании того, как реализовать:
Если отправка формы приводит к изменению состояния сервера, которое влияет на кешированные страницы, рассмотрите возможность очистки кеша Turbolinks с помощью
Turbolinks.clearCache()
.Движок Turbolinks Rails автоматически выполняет эту оптимизацию для запросов XHR без GET, которые перенаправляют с помощью помощника
redirect_to
.
Я видел, что на github есть пакет «Drop-in turbolinks для Django», но он разветвлен от turbolinks-classic, а в исходном коде нет упоминаний заголовка Turbolinks-Location, поэтому я уверен, что это не то, что я ищу .