Я сделал поисковый сайт по Django иasticsearch.
Он отлично работает в локальной среде, затем я помещаю его на сервер Ubuntu и подключаю к сети с помощью gunicorn и ngnix.Все хорошо, кроме нумерации страниц:
Первая страница хороша, но когда мне требуется следующая страница, иногда она отвечает, что страница 404 не найдена.Однако, когда я обновляю его, иногда он отображает правильные вещи.Кроме того, иногда это дает мне страницу ответа, но некоторое содержимое страницы пусто.
Поскольку я хочу получить ранг для возвращаемых элементов, я делаю это для быстрой подкачки страниц, не знаюесли это имеет значение:
def get_context(self):
global previous_results
if not self.request.GET.get('page'):
self.init_provterms()
pool = ThreadPool(8)
pool.map(self.init_rank, range(1, 8))
pool.close()
pool.join()
self.results = sorted(self.results, key=lambda result: result.object.Rank, reverse=True)
previous_results = self.results
elif self.request.GET.get('study_method'):
self.results = previous_results
pool = ThreadPool(8)
pool.map(self.init_rank, range(1, 8))
pool.close()
pool.join()
self.results = sorted(self.results, key=lambda result: result.object.Rank, reverse=True)
previous_results = self.results
else:
self.results = previous_results
(paginator, page) = self.build_page()
if page.end_index() - page.number < 10:
page_nums = range(page.number, page.end_index())
else:
page_nums = range(page.number, page.number + 10)
page.page_nums = page_nums
save_query_form = SaveQueryForm(self.request.POST or None, initial={'Query_to_save': " ".join(self.request.GET.get('q', ''))})
saved_searches_list = saved_searches(self.request.user)
context = {
'suggestions': list(sug),
'query': self.query,
'form': self.form,
'page': page,
'paginator': paginator,
'suggestion': None,
'weight': weight,
'save_form': save_query_form,
'saved_searches': saved_searches_list.items()
}
if hasattr(self.results, 'query') and self.results.query.backend.include_spelling:
context['suggestion'] = self.form.get_suggestion()
context.update(self.extra_context())
return context