Поддерживайте состояние коллапса после того, как Django отобразит другую страницу
В моей боковой панели я включил кнопку свертывания, чтобы показать/скрыть некоторое содержимое. Теперь я хочу сохранить состояние свернутости при рендеринге другой страницы: Если Projects
был свернут до обновления страницы, он должен оставаться в таком состоянии после обновления другой страницы.
Допустим, я нажимаю на Посмотреть все проекты:
Это вызовет представление projects
:
По сути, представление представляет собой загрузку другой HTML-страницы (но с сохранением той же боковой панели)
@login_required
def projects(request):
return render(request, 'projects.html')
После выполнения представления и рендеринга projects.html
Projects
появляются не свернутые страницы. Как я могу сохранить состояние свернутости при рендеринге других страниц?
Код проекта:
<li id="sidebarProject" class="sidebar-element {% if nbar == 'projects' %}active{% endif %}">
<div class="card projects-card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-kanban-fill" viewBox="0 0 16 16">
<path d="M2.5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2h-11zm5 2h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm-5 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3zm9-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/>
</svg>
<button id="btnProjectsSidebar" class="btn btn-link" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<span id="sidebarProjectsText">{% translate "Projects" %}</span>
<i id="profile-chevron-down" class="bi bi-chevron-down ml-2">
</i>
</button>
</h5>
</div>
<div id="collapseOne" class="collapse" aria-labelledby="headingOne">
<div class="card-body">
<div class="row">
<a href="#" id="seeAllProjectsSidebarA"><p class="text-center newProjectSidebar">Create a New Project</p></a>
</div>
<div class="row">
<a href="/projects" id="seeAllProjectsSidebarA"><p class="text-center seeAllProjectsSidebar">See All Projects</p></a>
</div>
</div>
</div>
</div>
</li>
HTML не имеет статичности.
Вам понадобится Javascript, прикрепленный к кнопке submit, чтобы добавить состояние коллапса к данным, которые будут отправлены обратно. Часто в форму добавляют скрытое поле ввода, чтобы вид, который получает POST, также мог получить этот статус. При перенаправлении вы можете передать состояние коллапса следующему представлению, возможно, в качестве GET-параметра.