2

Flask と Flask-WTF を使用しており、views.pyファイルに次のコードがあります。

from flask import render_template, flash, redirect, url_for   
from . import app, forms

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
    form = forms.HelpSearch()
    if form.validate_on_submit():
        flash('Searched for: %s' % form.value.data)
        redirect(url_for('help', form.value.data))
    return render_template('index.html', title='Index', form=form)


@app.route('/help/<keyword>', methods=['GET', 'POST'])
def help(keyword=None):
    form = forms.HelpSearch()
    if form.validate_on_submit():
        flash('Searched for: %s' % form.value.data)
        redirect(url_for('help', keyword=form.value.data))

    # This is just some dummy data for testing my template
    keywords = ['n', 'north']
    groups = ['movement']
    syntax = [
        {'cmd':"n", 'args': ''},
        {'cmd':'north', 'args': ''}
    ]
    content = 'Move north'

    return render_template('show_help.html',
                            title=keyword,
                            form=form,
                            keywords=keywords,
                            groups=groups,
                            syntax=syntax,
                            content=content)

私が望んでいて期待しているのは、誰かがフォームの検索フィールドにテキストを入力して検索ボタンを押すと、その値が返され、適切なページにリダイレクトされることですfoo。 /ふー。

残念ながら、フォーム検証ビットからのリダイレクトは、期待どおりにリダイレクトされません。現在のページをリロードしているように見えます。

flash呼び出しが正しい情報で表示されるため、フォームがデータを取得して返すという事実を知っています。たとえば'Searched for: foo'、キーワードをurl_forページに渡すと、単にリロードされます。手動で移動すると正常に/help/foo動作します。

私はそれが機能していることをテストしました.printsurl_forなどのキーワードを手動で入力すると、必要に応じて適切なパスが作成されます。print url_for('help', keyword='foo')/help/foo

希望どおりにリダイレクトされない理由を知っている人はいますか?

編集:誰かが正確に何が起こっているのかを見たい場合は、 Herokuで実行してください。

4

2 に答える 2

0

あなたの問題は何も返さないことだと思います

これを確認できます:

def index():
    form = forms.HelpSearch()
    if form.validate_on_submit():
        flash('Searched for: %s' % form.value.data)
        return redirect(url_for('help', keyword=form.value.data))
    return render_template('index.html', title='Index', form=form)
于 2014-10-18T14:42:46.340 に答える