Итак, у меня есть поле ввода, которое позволяет мне ввести некоторый текст и с помощью этого текста искать в моей базе данных любые подобные элементы.
У меня очень простой класс формы
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
class searchForm(FlaskForm):
seachInput= StringField('Search',validators=[DataRequired()])
Это отображено в моем обзоре. html такая страница
<div class="container-right float-right">
<form class="form-search" method="GET" action="/overview">
<div class="row row-searchbar justify-content-center">
<div class="col-4">
{{search.seachInput(class_='form-control mr-sm-2')}}
</div>
<div class="col-0">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</div>
</div>
</form>
Теперь я думаю, что у меня есть представление о том, где может быть проблема, потому что в обзоре. html есть несколько маршрутов. один для самого / обзора, другой для разбивки на страницы и, наконец, поискового запроса, он, кажется, всегда отображает этот
return render_template("overview.html",pagination=pagination,filter=filter,search=search)
@routes_blueprint.route('/overview',defaults={"page":1})
@routes_blueprint.route('/overview/<int:page>')
@routes_blueprint.route('/overview/<string:search>',methods=['GET'])
def overview(page):
""" Overview page """
filter = checkBox()
search = searchForm()
page = page
per_page = 3
pagination = Comic.query.paginate(page,per_page,error_out=True)
if search.validate_on_submit():
searchQuery = search.seachInput.data
format = "%{}%".format(searchQuery)
results = Comic.query.filter(Comic.comicName.like(format)).all()
return render_template('overview.html',results=results)
return render_template("overview.html",pagination=pagination,form=filter,search=search)
В моем обзоре. html I используйте if, чтобы проверить, находятся ли какие-либо данные внутри переменной результатов
<div class="row row-comics justify-content-start">
{% if results %}
{% for comics in results %}
<div class="col-3 col-comics">
<h2>{{comics.comicName}}</h2>
<a href="{{url_for('routes.details',id=comics.comicId)}}" class="ClickableImage"><img
src="{{comics.comicImage}}"></a>
</div>
{% endfor %}
{% else %}
{% for comics in pagination.items %}
<div class="col-3 col-comics">
<h2>{{comics.comicName}}</h2>
<a href="{{url_for('routes.details',id=comics.comicId)}}" class="ClickableImage"><img
src="{{comics.comicImage}}"></a>
</div>
{% endfor %}
{% endif %}
</div>
Всякий раз, когда я ввожу что-то в строку поиска, URL-адрес будет изменяться на /overview?search=yoursearchquery
, но данные не будут отображаться на странице обзора.