У меня есть поисковый запрос на моей домашней странице.Ранее я сохранял данные в базе данных, и мой метод правильно передавал результаты в шаблон.Тем не менее, данные должны были быть сохранены во времени, поэтому я начал отправлять их через AJAX.После рефакторинга кода результаты получены и отформатированы в моем представлении, но я не могу успешно отобразить контекст в шаблоне результатов.
Вот неверный метод в views.py:
def item_list(request):
products = {}
out = {}
if request.is_ajax():
query = request.POST.get('items')
products = format_products(query)
out = Sets.objects.filter(ItemInSet__item__name__in=[name for name, metrics in products.items() if metrics == '1']).exclude(ItemInSet__item__name__in=[name for name, metrics in products.items() if metrics == '0']).distinct()
if out:
paginator = Paginator(out, 10) # show 10 per page
page = request.GET.get('page', '1')
try:
out_paginated = paginator.page(page)
except PageNotAnInteger:
out_paginated = paginator.page(1)
except EmptyPage:
out_paginated = paginator.page(paginator.num_pages)
else:
out_paginated=out
return render(request, 'item_list.html', {'products': products, 'results': out_paginated})
Я могу получить доступданные в if request.is_ajax():
, а также после шага нумерации страниц.Затем out
снова проверяется, кажется пустым, и метод отображает пустой объект.После рендеринга шаблона он запускает тег {% empty%} с 'Нет результатов, соответствующих вашему запросу.'Вызывается ли представление как-то дважды и стирает данные в процессе, или данные публикуются в скором времени, но не пересылаются через новый AJAX и, следовательно, теряются?
Как исправить метод?Или лучше просто добавить форматированный запрос в URL и получить его через GET?