烧瓶错误: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!')