Flask / Whoosh全文搜索只是将我重定向到索引

时间:2016-02-15 16:26:49

标签: python html flask flask-whooshee

我正在使用Flask.xt.WhooshAlchemy,一个用于Whoosh全文索引的Flask包装器&搜索库。我有一个带有搜索表单的索引页面,这是views.py的相关部分:

@app.route('/')
@app.route('/index')
def index():
    posts = [i for i in Email.query.all()]
    return render_template('index.html',  
                           title='Home',
                           posts=posts,
                           search_form=g.search_form)

@app.before_request
def before_request():
    g.search_form = SearchForm()

@app.route('/cruz')
def cruz():
    u = Politician.query.get(1)
    num = len(u.emails.all())
    posts = u.emails.all()
    return render_template('cruz.html',title='Ted Cruz',posts=posts,num=num)

from config import MAX_SEARCH_RESULTS

@app.route('/search', methods=['POST'])
def search():
    if not g.search_form.validate_on_submit():
        return redirect(url_for('index'))
    return redirect(url_for('search_results', query=g.search_form.search.data))

@app.route('/search_results/<query>')
def search_results(query):
    results = Email.query.whoosh_search(query, MAX_SEARCH_RESULTS).all()
    return render_template('search_results.html',
                           query=query,
                           results=results)

这是我用来显示搜索表单的HTML:

  <form style="display: inline;" action="{{ url_for('search') }}" method="post" name="search">{{ g.search_form.hidden_tag() }}{{ g.search_form.search(size=20) }}<input type="submit" value="Search"></form>

我已尝试使用和不使用flask global g,起飞和应用不同的处理程序,但似乎没有任何工作。每当我在搜索字段中输入文本并按Enter键时,就会发出请求,但它最终会重定向到索引。

小更新:我在view.py中切换了一些内容,就像更直接地引用搜索功能中的表单一样。所有更改现在都反映在当前帖子中。现在,当我输入搜索时,它仍然会将我路由回索引,但不会在URL中显示CSRF令牌 - 而是显示/?search=QUERY。我认为问题在于views.py的搜索功能的重定向部分,但无论我将其更改为什么(如render_template),它仍然会让我回到索引。任何人对如何解决这个问题都有任何想法?

0 个答案:

没有答案