如何在模板中的结果中突出显示搜索查询

时间:2014-07-31 09:12:56

标签: flask sqlalchemy jinja2 whoosh

好的,所以我用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表中搜索nameforname列。在我的模板中,我做了类似的事情:

{% for student in results %}
  {% student.name %}
  {% student.forname %}
{% endfor %}

如何突出显示查询字符串匹配的位置?

1 个答案:

答案 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。

注意:查询是搜索的输入内容