我正在做烧瓶教程here,最后,继续进行开发,该节说要实现一个搜索框,该搜索框按名称过滤索引页,在出现错误和错误之后,我才显示了搜索页,但仍然无法从搜索中得到结果。
这是我的搜索HTML:
<form method="GET" action="{{ url_for('blog.search') }}">
<input type="text" placeholder="Search by" name="q" value="{{ request.args.get('q', '') }}">
<button type="submit">Go</button>
</form>
这是我的路线
from flask import request
@bp.route('/search', methods=['GET','POST'])
def search():
db = get_db()
query = request.args.get('q')
posts = db.execute(
"SELECT title, body FROM post WHERE body LIKE ? ",
('%'+ query +'%',)).fetchall()
return render_template('blog/search.html', posts=posts )
这是我的搜索“ blog / search.html”模板
<ul>
{% for post in posts %}
<li> {{ post['title'] }} </li>
<li> {{ post['body'] }} </li>
{% endfor %}
</ul>
我的路线或sql查询是否存在问题? 还是有更好的方法在烧瓶中实现搜索,没有任何扩展,谢谢。
答案 0 :(得分:0)
我知道了。 我在下面的'blog / search.html'模板上犯了错误,这是我的工作代码
我的搜索路线:
@bp.route('/search', methods=['GET','POST'])
def search():
db = get_db()
query = request.args.get('q')
posts = db.execute(
"select id, title from post where title LIKE ? ",
('%'+ query+'%',)
).fetchall()
return render_template('blog/search.html', posts=posts)
注意:此路由仅检查我的数据库标题
我新的“ blog / search.html”模板:
{% if posts %}
<ul>
{% for post in posts %}
<li><a href="{{ url_for('blog.single', id=post['id']) }}">{{ post[1] }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>no entries</p>
{% endif %}
注意:“ {{url_for ...}}”是用于查看搜索详细信息的链接
希望这对尝试在this教程中进行搜索的人有所帮助。 欢呼:)