1. ホーム
  2. python

[解決済み] Flask のエラー: werkzeug.routing.BuildError

2022-02-10 19:12:05

質問

flaskrサンプルアプリのログインを変更したところ、1行目がエラーになります。 しかし、www.htmlはテンプレートディレクトリにあります。

return redirect(url_for('www'))
#return redirect(url_for('show_entries'))

表示エラー

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 

解決方法は?

return redirect(url_for('www')) というような関数をどこかに作っておくと、うまくいきます。

@app.route('/welcome')
def www():
    return render_template('www.html')

url_for は関数を探すので、それを渡すと 名前 を呼び出すことができます。 このように考えてください。

@app.route('/login')
def sign_in():
    for thing in login_routine:
        do_stuff(thing)
    return render_template('sign_in.html')

@app.route('/new-member')
def welcome_page():
    flash('welcome to our new members')
    flash('no cussing, no biting, nothing stronger than gin before breakfast')
    return redirect(url_for('sign_in')) # not 'login', not 'sign_in.html'

また、次のようにすることもできます。 return redirect('/some-url') もし、その方が覚えやすいのであれば。 また、最初の行にあるように、あなたが欲しいのは単に return render_template('www.html') .

あと、下のshuaiyuancnさんのコメントではありませんが、blueprintsを使用している場合。 url_for として呼び出す必要があります。 url_for('blueprint_name.func_name') オブジェクトを渡すのではなく、文字列を渡していることに注意してください。 ドキュメントはこちら .