Flask / Whoosh полнотекстовый поиск просто перенаправляет меня в индекс

Я использую Flask.ext.WhooshAlchemy, Flask Оболочка для библиотеки полнотекстового индексирования и поиска Whoosh. У меня есть страница указателя с формой поиска, и это является важной частью 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>

Я пробовал как использовать, так и не использовать флягу global g, снимая и применяя разные обработчики, но, похоже, ничего не работает. Всякий раз, когда я ввожу текст в поле поиска и нажимаю клавишу ввода, делается запрос, но он в конечном итоге перенаправляет на индекс.

небольшое обновление: я переключил несколько вещей в view.py, как и более прямое обращение к форме в функции поиска. Все изменения теперь отражены в текущем сообщении. Теперь, когда я вхожу в поиски, он все еще направляет меня обратно к индексу, но не показывает маркер CSRF в URL - вместо этого он просто показывает /?search=QUERY, Я думаю, что проблема заключается в перенаправлениях части функции поиска views.py, но независимо от того, что я изменяю это (как render_template) он все еще возвращает меня к индексу. У кого-нибудь есть идеи как это исправить?

0 ответов

Другие вопросы по тегам