我是flask的新手,我正在做一个博客项目,我正在尝试添加一个搜索框,访问者或用户在其中输入一个关键字,然后将显示与该关键字相关的帖子。 我尝试了 whoosh 索引但它没有用,因为我使用的是 python3.9 所以我尝试了这个:
@app.route('/search', methods =["GET", "POST"])
def search():
search_keyword = request.form.get("search_box")
results = db.engine.execute("SELECT * FROM post "
"WHERE title = search_box ")
return render_template('home.html', results=results)
试图获取输入字段的值
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" method="GET" action="search" name="search_box">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
没有错误但它不起作用,有人可以帮助我吗?谢谢
答案 0 :(得分:0)
最终,我最终使用了 flask_msearch
我安装了它:pip install flask-msearch
init.py :
from flask_msearch import Search
...
search = Search(app)
search.init_app(app)
search.create_index(update=True)
MSEARCH_INDEX_NAME = os.path.join(app.root_path,'msearch')
MSEARCH_PRIMARY_KEY = 'id'
MSEARCH_ENABLE = True
在 models.py 中:
class Post(db.Model):
__searchable__ = ['title', 'content']
routes.py:
@app.route('/search/')
def search():
keyword = request.args.get('query')
posts = Post.query.msearch(keyword,fields=['title', 'content'])
return render_template("home.html",title='Searching..' + keyword, posts=posts)
在我的模板中:
<form method="GET" action="/search/">
<input type="text" name="query" class="form-control" placeholder="Search..." />
<button type="submit" class="btn btn-light-primary font-weight-bold">
</button>
</div>
</form>
</div>
感谢所有帮助我的人