好的,所以我用Flask-WhooshAlchemy
@views.route('/search', methods=['GET'])
def search():
query = request.args['query']
results = []
def _model_search(m):
return m.query.whoosh_search(query).all()
if query:
for model in [Student, StudentHomework, Winner]:
results += _model_search(model)
return render_template(
'search.html',
query=query,
results=results,
)
然后,在我的搜索模板中,我输出找到的results
。如何突出显示匹配的查询?
例如,我在Student
表中搜索name
和forname
列。在我的模板中,我做了类似的事情:
{% for student in results %}
{% student.name %}
{% student.forname %}
{% endfor %}
如何突出显示查询字符串匹配的位置?
答案 0 :(得分:0)
回答现在为时已晚,但我希望它会在将来对某人有所帮助。 即使当我看到这个问题时,当我想出一个解决方案时也遇到了同样的问题,我认为最好共享一下。
尽管您希望突出显示两列。但是我只能突出显示一列。
{% for student in results %}
{% if query in student.name %}
{{ student.name.replace(query, '<span style="background-color: yellow;">{}</span>'.format(query)) }}
{% endif %}
{% else %}
{{ student.name }}
{% endfor %}
如果这是Student.name列中的查询,它将突出显示为CTRL + F。
注意:查询是搜索的输入内容