Flask错误:werkzeug.routing.BuildError

che*_*nge 61 python flask

我修改了flaskr sample app的登录,第一行获取错误.但www.html是在模板目录中.

return redirect(url_for('www'))
#return redirect(url_for('show_entries'))
Run Code Online (Sandbox Code Playgroud)

显示错误:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 
Run Code Online (Sandbox Code Playgroud)

unm*_*ted 144

return redirect(url_for('www')) 如果你在其他地方有这样的功能会工作:

@app.route('/welcome')
def www():
    return render_template('www.html')
Run Code Online (Sandbox Code Playgroud)

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'
Run Code Online (Sandbox Code Playgroud)

return redirect('/some-url')如果这更容易记住,你也可以这样做.考虑到你的第一线,你想要的也是可能的return render_template('www.html').

而且,不是从shuaiyuancn的评论下面,如果你正在使用蓝图,url_for应该被调用为url_for('blueprint_name.func_name').见这里的文档.

  • +1是一个非常明确的例子......并且"早餐前没有比杜松子酒更强" (17认同)
  • 蓝图应该是`url_for('blue_print.func_name')`,如http://flask.pocoo.org/docs/0.10/blueprints/#building-urls中所示 (11认同)