Прямой рендеринг html-страницы на определенный элемент без прокрутки (Django/JavaScript)
Мой вопрос касается управления прокруткой страницы/целями якоря при использовании Django и Bootstrap.
У меня есть проект Django, оформленный с помощью Bootstrap.
Информация на странице отображается последовательно. Новая информация добавляется в нижнюю часть страницы каждый раз, когда пользователь нажимает кнопку. Это достигается за счет загрузки всей информации в словарь, но отображения только определенных ее частей в зависимости от переменной count, которая хранит информацию о том, как далеко пользователь продвинулся в этом деле.
При нажатии кнопки информация передается в представление, которое проверяет ее целостность и, если она приемлема, увеличивает переменную count и перенаправляет пользователя обратно на исходную страницу.
На исходной странице теперь отображается новая информация из-за увеличенной переменной count.
Я пытаюсь использовать якоря с перенаправлением URL для обеспечения загрузки страницы на новую информацию. Эти якоря работают, но страница загружается сверху каждый раз, когда пользователь нажимает кнопку для продвижения, а затем страница прокручивается вниз.
Идеально страница должна загружаться непосредственно на новой информации или перезагружаться там, где пользователь нажал submit, а затем прокручиваться до новой информации.
Раздел представления для демонстрации обработки текущего представления перенаправлением на новый div.
def advance_slide(request, **kwargs):
...
anchor = '#' + 'slide_' + str(slide_id)
return HttpResponseRedirect(reverse('case_play', kwargs={'pk': case_id}) + anchor)
Попытки на данный момент
Я оптимистично попытался изменить поведение прокрутки страницы, но это не помогло.
После этого я задался вопросом, является ли такое поведение функцией Bootstrap, и поискал в документации Bootstrap 'anchor' и 'links'. Хотя это дало некоторые результаты, я не думал, что какой-либо из них похож на то, что мне нужно.
Я также попытался использовать JS для рендеринга определенного элемента, используя следующее с шаблоном Django:
{% if anchor %}
<script>
$(document).ready(function(){
location.assign('{{anchor}}')
});
</script>
{% endif %}
Здесь вместо использования HttpResponseRedirect с якорем выше я просто снова отображаю исходную страницу, но передаю переменную 'anchor' в контексте. Я надеялся, что перед загрузкой HTML JS установит окно на нужный элемент. Вместо этого страница снова загружается сверху, а затем прокручивается вниз до нужного элемента (как это было раньше). Даже если бы я мог изменить поведение на переход вместо прокрутки, я бы все равно не хотел, чтобы страница переходила в начало каждый раз, когда пользователь вводит данные, поскольку некоторые сценарии довольно длинные.
В большинстве постов в сети наблюдается противоположная проблема - люди пытаются добавить функциональность плавной прокрутки, а не убрать ее.
Я мог бы попытаться переписать приложение так, чтобы все продвижение данных обрабатывалось с помощью ajax, но это потребует выполнения большого количества обработки данных в представлении, я думаю, и означает, что мне придется писать на JS, а не на Python, в котором у меня гораздо меньше опыта.
Я думаю, что существует несколько различных способов добиться того, что мне нужно - загрузки html-страницы через определенный html-элемент без прокрутки - но я не могу заставить их работать, и мне неясно, каким будет лучшее решение для этого проекта (максимально используя стиль Django).
Спасибо за ваше время и любую помощь, которую вы можете оказать.