65

フラスコサンプルアプリのログインを変更すると、最初の行でエラーが発生します。ただし、www.htmlはテンプレートディレクトリにあります。

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

表示エラー:</ p>

werkzeug.routing.BuildError

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

3 に答える 3

152

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のコメントからではなく、ブループリントを使用している場合url_forurl_for('blueprint_name.func_name') 、オブジェクトではなく文字列を渡すことに注意してください。 こちらのドキュメントを参照してください

于 2010-09-10T09:31:36.827 に答える
4

def www():それがすでに定義されていると仮定すると(アンマウントの素晴らしい答えによって示唆されているように)、登録されていないブループリントを使用している場合にも、このエラーがスローされる可能性があります。

appが最初にインスタンス化されるときに、これらを必ず登録してください。私にとって、それはこのように行われました:

from project.app.views.my_blueprint import my_blueprint
app = Flask(__name__, template_folder='{}/templates'.format(app_path), static_folder='{}/static'.format(app_path))
app.register_blueprint(my_blueprint)

そして内 my_blueprint.py

from flask import render_template, Blueprint
from flask_cors import CORS

my_blueprint = Blueprint('my_blueprint', __name__, url_prefix='/my-page')
CORS(my_blueprint)


@metric_retriever.route('/')
def index():
    return render_template('index.html', page_title='My Page!')
于 2017-08-22T22:39:23.627 に答える
3

このエラーに遭遇しました

BuildError:('project_admin'、{}、なし)

のような電話があったとき

return redirect(url_for('project_admin'))

project_adminブループリント内の関数を参照しようとしていました。エラーを解決するために、次のように関数の名前の前にドットを追加しました。

return redirect(url_for('.project_admin'))

そして出来上がり、私の問題は解決しました。

于 2018-10-26T21:29:42.440 に答える