Как получить 2 гет параметра?

192
30 октября 2021, 11:30

Есть 2 формы. 1 - поиск, 2 фильтрация

1.

<form class="form" action =" {% url 'search' %}" >
                    <div class="input-group">
                        <input class="form-control border-right-0 border " type="search" placeholder="Искать товары", name="search">
                        <span class="input-group-append">
                            <div class="input-group-text bg-transparent p-0">
                            </div>
                            <button class="btn btn-outline-success " type="submit"><i class="fa fa-search"></i></button>
                        </span>
                    </div>
                </form>

2.

<form class="form for_change_items" method="get" name ="a" > 
                                        <div class="form-check p-0  " >

                                            <input class="form-check-input"  type="radio" onClick="a.submit()"  name="model_or_item"  id="model" value="model">
                                            <input class="form-check-input"  type="radio" onClick="a.submit()"  name="model_or_item" id="item" value="item" >
                                            <a class= "gray_text">{{items.count }} товар (-а, -ов)</a>
                                            <input class="form-check-input" type="radio" name="change_items" onClick="a.submit()" checked id="2_items" value="2_items" >
                                            <input class="form-check-input" type="radio" name="change_items" onClick="a.submit()"  id="many_items" value="many_items">
                                            <label  {% if model_or_item == 'item' %} style="  opacity:0.7;" {% endif %} class="form-check-label font-weight-bolder" for="model">
                                                <a  {% if model_or_item == 'model' %} style=" text-decoration: underline;" {% endif %}>Модель</a>
                                            </label>
                                            <label  {% if model_or_item == 'model' %} style=" opacity:0.7;" {% endif %} class="form-check-label font-weight-bolder " for="item">
                                                <a  {% if model_or_item == 'item' %} style=" text-decoration: underline;" {% endif %}>Изделие</a>
                                            </label> 
                                        </div>
</form>

как я их получаю в views.py

search = request.GET.get('search')
change_items = request.GET.get('change_items', '2_items')
model_or_item = request.GET.get('model_or_item', 'model')
items = Item.objects.filter(title__icontains = search)

Если я что-то ищу, а потом начинаю фильтровать товар, страница перезагружается и search становиться None. Как сохранять значение в переменной search?

Answer 1

Используй одну форму (всмысле один тег form), и будет тебе счастье

Или как вариант можно при отправке данных формы, добавить параметры второй формы (Через JS).

Не знаю, сработает ли отправка данных формы по url c уже установленными get параметрами (можете проверить), но если отправлять форму по AJAX и рендерить потом результаты на странице (что удобнее для пользователя, тк нет явной перезагрузки страницы), то сработает.

Должно быть что то вроде

var form_data = search_form.serialize();
var filter_form_data = filter_form.serialize();
if (form_data) {
    form_data += '&' + filter_form_data;
}
else {
    form_data = filter_form_data;
}
$.get({
   url: 'bla-bla.ru/page',
   data: form_data,
   .........
});
# Кстати можно попробовать и редирект
# Если в window.location будет знак "?" то надо быдет обрезать строку до этого знака, и к ней добавлять параметры
window.location = window.location + '?' + form_data;
READ ALSO
Run-Time Check Failure #2 - Stack around the variable &#39;str&#39; was corrupted

Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted

И так, после выполнения этого кода, VS возвращает ошибку

396
С++ вывод столбцами через cout

С++ вывод столбцами через cout

Есть такая задача: сгенерировать матрицу NxN случайными числами, найти в каждом столбце полученной матрицы максимум, из выборки максимумов...

89
Не работает муравей ленгтона на c++

Не работает муравей ленгтона на c++

Написал муравья ленгтона на c++, для визуализации использовал функции winapiМуравей ходит нормально ровно до того момента когда он должен начать...

254