Мне трудно использовать нумерацию страниц. Я должен разбить на страницы запросasticsearch, но когда я нажимал на вторую страницу, он показывал пустое имя, потому что он отправлял запрос Get, и снова запрос Flexiblesearch запускался и возвращал пустой список. Я решил эту проблему, сохранив данные в файл json, но снова, когда я возвращаюсь на 1-ю страницу, теперь она пуста.
Код:
'
@ app. route ('/', method = ['GET', 'POST']) def search_request ():
if(request.method == "POST" or request.args.get('page')):
json_url = os.path.join(SITE_ROOT, "static/data", "search_result.json")
res = ''
if(not request.args.get('page')):
search_term = request.form["input"]
res = es.search(
index="data_science_index",
size=20,
body={
"min_score": 0.0,
"query": {
"match" : {
"content": search_term
}
},
"highlight" : { "pre_tags" : ["<strong>"]
,"post_tags" : ["</strong>"] ,
"fields" : { "content": {}
}}
}
)
res['ST'] = search_term
with open(json_url, 'w') as fout:
json.dump(res, fout)
else:
with open(json_url, 'r') as fout:
res = json.load(fout)
data_for_pagination = res['hits']['hits']
page, per_page, offset = get_page_args()
offset = offset + 1
print(f'offset: {offset} per_page: {per_page}')
fs_for_render = data_for_pagination[offset:offset+per_page]
total = len(data_for_pagination)
pagination = Pagination(page=page, per_page=per_page, offset=offset,
total=total, record_name='data_for_pagination', css_framework='bootstrap4')
return render_template('search.html', res_data=fs_for_render, pagination=pagination)
return render_template('search.html')
'