python 全文检索 flask_Flask 教程,第十部分:全文搜索

整合全文检索到应用程序

为了让我们应用程序的用户能用上搜索功能,我们还需要增加一点小小的改变。

配置

就配置而言,我们仅仅需要指定最大的搜索结果返回数(fileconfig.py):

MAX_SEARCH_RESULTS = 50

搜索表单

我们需要在页面顶部的导航栏中增加一个搜索框。把搜索框放到顶部是极好的,因为这样所有页面就都有搜索框了(注:所有页面公用导航栏)。

首先我们增加一个搜索表单类(fileapp/forms.py):

class SearchForm(Form):

search = TextField('search', validators = [Required()])

然后我们需要增加一个搜索表单对象,而且要让它对所有模板可用,这么做是因为我们要将搜索表单放到所有页面的共同的导航栏。完成这个最简单的方法是在before_request handler上创建一个form,然后将它传到Flask的全局变量g(fileapp/views.py):

@app.before_request

def before_request():

g.user = current_user

if g.user.is_authenticated():

g.user.last_seen = datetime.utcnow()

db.session.add(g.user)

db.session.commit()

g.search_form = SearchForm()

然后我们添加form到我们的模板(fileapp/templates/base.html):

Microblog:

Home

{% if g.user.is_authenticated() %}

| Your Profile

|

{{g.search_form.hidden_tag()}}{{g.search_form.search(size=20)}}

| Logout

{% endif %}

注意,我们只是当有用户登录时才会显示这个搜索框。同样的,before_request handler只有在有用户登录时才会创建form,这是因为我们的应用程序不会展示任何内容给没有经过认证的用户。

你可能感兴趣的:(python,全文检索,flask)