Сортировка результатов поиска
Я начинаю изучать Django и столкнулся с такой проблемой: я не могу добавить параметры к ссылке
Пример:
Ссылка до изменения:
http://127.0.0.1:8000/?brand=&search=
Ссылка после изменения:
http://127.0.0.1:8000/?brand=&search=&sort=
Что я получаю:
http://127.0.0.1:8000/?sort=
Как это реализовать?
views.py
def filters(request):
#search
search_post = request.GET.get('search', '')
if search_post:
all = Product.objects.filter(Q(title__icontains=search_post) & Q(content__icontains=search_post)).order_by()
else:
all = Product.objects.all()
#sort by price
sort_by = request.GET.get("sort", '')
if sort_by == "l2h":
all = Product.objects.all()
all = all.extra(order_by = ['-price'])
elif sort_by == "h2l":
all = Product.objects.all().order_by('price')
filters = IndexFilter(request.GET, queryset=all)
context = {
'filters': filters
}
return render(request, 'index.html', context)
urls.py
from django.urls import path
from .views import *
urlpatterns = [
path('', filters, name='filters')
]
index.html
<form method="get" action="{% url 'filters' %}">
{{ filters.form }}
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" name="search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
<a class="filter_by" href="?sort=l2h">Price:--low to high</a>
<a class="filter_by" href="?sort=h2l">Price:-- high to low</a>
</form>
Вы определили 2 тега якоря в своем коде, которые полностью изменяют URL и не добавляют новые параметры запроса к URL.
<a class="filter_by" href="?sort=l2h">Price:--low to high</a>
<a class="filter_by" href="?sort=h2l">Price:-- high to low</a>
Что вам нужно сделать, это написать некоторый код javascript и использовать URLSearchParams для добавления этого вида к существующим параметрам url.
Используйте этот ответ для добавления параметров в url.