【发布时间】:2020-05-08 05:41:46
【问题描述】:
我尝试创建一个烧瓶搜索,但是当它没有显示任何错误时,它总是没有显示任何结果 这是我在 app.py 中的代码
@app.route("/search", methods=['GET', 'POST'])
def shearch():
if request.form == 'POST':
search = request.form.get("search")
results = Books.query.filter_by(search=request.form.search).all
return render_template('search.html', results=results, search=search)
return render_template('search.html')
在html文件中
<form class="search" action="/search" method="post">
<fieldset class="search">
{{ form.search.label }} {{ form.search(placeholder='search') }}
</fieldset>
<div class="submit-button">
{{ form.submit }}
</div>
<table>
{% if not results|length %}
<h6> No results found. Please try again.</h6>
{% else %}
<tr>
<th>isbn</th>
<th>title</th>
<th>author</th>
<th>year</th>
</tr>
{% for result in results %}
<tr>
<th><a href="api/{{result['isbn']}}"> {{result['isbn']}}</th>
<th><a href="books/{{result['title']}}"> {{result['title']}}</th>
<th> {{result['author']}}</th>
<th> {{result['year']}}</th>
</tr>
{% endfor %} {% endif %}
</table>
它根本没有显示任何结果 我在 app.py 文件中尝试了另一种方式
if request.method == 'POST':
search = str(form.search.data)
results = Books.query.filter((Books.title, Books.author, Books.year, Books.isbn).like(search=form.search.data)).all()
return render_template('search.html', results=results, search=search, form=form)
【问题讨论】:
-
首先使用
print()看看你从数据库中得到了什么。也许它给出了空的结果。 -
顺便说一句:在第一个版本中,
all()不应该是()吗? -
你应该使用
print()search)来查看你从search = request.form.get("search")得到了什么。而是你应该在filter_by(search=search)中使用search而不是request.form.search -
谢谢你帮助打印(搜索)显示没有,当我托盘将其更改为
results = Books.query.filter_by(search=search).all()但它引发了另一个错误(sqlalchemy.exc.InvalidRequestError:实体'main.Books'>' 没有属性 'search') -
也许您应该使用数据库中的列名,而不是
search-filter_by(column_name=search)。你应该检查你的模板是否生成<input ... name="search">,它以request.form.get("search")发送代码中可用的数据
标签: python flask search flask-sqlalchemy