#python #flask
#python #flask
Вопрос:
Что я могу сделать, если разбивка на страницы прерывается после первой страницы, когда я указываю ключевое слово в форме для результатов поиска? Когда я перелистываю страницы без каких-либо фильтров, все работает отлично. У меня была такая же проблема в моем проекте Django, но я исправил ее, создав пользовательский тег шаблона, это было сложно, и теперь мне не удается найти какое-либо решение для моего приложения Flask. Есть идеи? Возможно, изменение URL?
1-я страница, когда указано ключевое слово «jquery»:
2-я страница — полностью нарушает разбивку на страницы и результат поиска:
VIEWS.PY
@app.route('/cve_list', methods=['GET', 'POST'])
def cve_list():
search_form = SearchForm()
page = request.args.get('page', 1, type=int)
cve = CVE.query.order_by(CVE.date.desc()).paginate(page=page, per_page=2)
if search_form.validate_on_submit(): # = when search_form was submitted
form_data = search_form.search.data
query = CVE.query.filter(CVE.content.contains(f'{form_data}')).paginate(page=page, per_page=2)
cve_amount = CVE.query.filter(CVE.content.contains(f'{form_data}')).count()
if cve_amount > 0:
flash(f'Found {cve_amount} vulnerabilities based on your search - {form_data}', 'success')
else:
flash(f'No vulnerabilities found based on your search - {form_data}', 'warning')
return render_template('cve_list.html',
title=f'Cve{form_data}',
form=search_form,
cve=query,
cve_amount=cve_amount)
return render_template('cve_list.html',
title='Cve List',
form=search_form,
cve=cve)
HTML
{% for cve in cve.items %}
<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2">{{ cve.title }}</a>
<small class="text-muted">{{ cve.date }}</small>
</div>
<p class="article-content">{{ cve.content }}</p>
</div>
</article>
{% endfor %}
<!-- PAGINATION -->
{% for page_num in cve.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
{% if page_num %}
{% if cve.page == page_num %}
<a class="btn btn-info mb-4" href="{{ url_for('cve_list', page=page_num) }}">{{ page_num }}</a>
{% else %}
<a class="btn btn-outline-info mb-4" href="{{ url_for('cve_list', page=page_num) }}">{{ page_num }}</a>
{% endif %}
{% else %}
{% endif %}
{% endfor %}
<!-- PAGINATION -->