Можно ли передать значение из HTML страницы в представление Django, используя метод GET?
У меня есть базовая боковая панель, которая содержит два элемента page1 и page2. Когда пользователь нажимает на элемент, он отображает соответствующую страницу. У меня также есть фильтр в боковой панели, который позволяет пользователю фильтровать результаты на странице по типу. Я могу видеть соответствующие результаты на странице, когда я выбираю фильтр, но моя цель состоит в том, чтобы заставить систему запомнить последний выбор фильтра, чтобы когда пользователь выбирает новую страницу, она автоматически показывала результаты по последнему выбранному фильтру. можно ли это сделать, отправив переменную 'type' через метод GET? или любое другое решение было бы признательно.
в файле base.html, рендеринг новой страницы с помощью метода Get
<div id="page" class="collapse" aria-labelledby="headingUtilities"
data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<a class="collapse-item" href="page1">Page1</a>
<a class="collapse-item" href="page2">Page2</a>
</div>
</div>
в файле base.html, Фильтрация текущей страницы через метод POST
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Filter By Type:</h6>
<form name="modality" action="" id='type' method="post" enctype="multipart/form-data">
{% csrf_token %}
<input class="collapse-item" name ='type' type="submit" value="type1" onclick="this.form.submit()">
<input class="collapse-item" name ='type' type="submit" value="type2" onclick="this.form.submit()">
<input class="collapse-item" name ='type' type="submit" value="type3" onclick="this.form.submit()">
</form>
</div>
</div>
django view:
@login_required(login_url='login')
def page1(request):
if request.method == 'POST':
type = request.POST['type']
else:
type = 'type1'
return render(request, "dashboard/page1.html",
{
'type': type,}
@login_required(login_url='login')
def page2(request):
if request.method == 'POST':
type = request.POST['type']
else:
type = 'type1'
return render(request, "dashboard/page2.html",
{
'type': type,}
Page1 HTML:
{% extends 'dashboard/base.html' %}
{% block content %}
<h1> Page1: {{type}} </h1>
{% end block %}
Page2 HTML:
{% extends 'dashboard/base.html' %}
{% block content %}
<h1> Page2: {{type}} </h1>
{% end block %}
Вы можете передать параметры для получения следующим образом
urlpatterns = [
path('dashboard/page1/<type>, page1view),
path('dashboard/page2/<type>, page2view)
]
и затем использовать их
def page1view(request, type):
pass
Но я думаю, что вам следует использовать sessions вместо этого. Пользователь будет автоматически посылать вам идентификатор своей сессии при каждом новом запросе, и django получит все данные, которые вы решите хранить в сессии этого пользователя. Может быть использован как словарь.
request.session['type'] = type
type = request.session['type']