Прямой рендеринг 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).

Спасибо за ваше время и любую помощь, которую вы можете оказать.

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