烧瓶错误:werkzeug.routing.BuildError

我修改flaskr示例应用程序的login,第一行出现错误。 但www.html在模板目录中。

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

显示错误:

 werkzeug.routing.BuildError BuildError: ('www', {}, None) 

感谢帮助!

return redirect(url_for('www'))将工作,如果你有一个像这样的其他地方的function:

 @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_for应该被调用为url_for(blueprint_name.func_name) 。 在这里看文档 。

假设def www():已经被定义(如unmounted的真棒答案所build议的), 如果你正在使用一个尚未注册的蓝图,也会抛出这个错误

确保在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!')