我修改flaskr示例应用程序的登录名,第一行出现错误。但是www.html在模板目录中。
return redirect(url_for('www')) #return redirect(url_for('show_entries'))
显示错误:
werkzeug.routing.BuildError BuildError: ('www', {}, None)
return redirect(url_for('www'))如果你在其他地方有这样的功能,它将可以工作:
return redirect(url_for('www'))
@app.route('/welcome') def www(): return render_template('www.html')
url_for查找一个函数,然后将你要调用的函数的名称传递给它。这样想:
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')如果更容易记住,你也可以这样做。给定第一行的情况下,你想要的也可能是just return render_template('www.html')。
return redirect('/some-url')
just return render_template('www.html')
而且,如果你使用的是蓝图,则不是来自shuaiyuancn的以下注释,url_for应以url_for('blueprint_name.func_name') 注意的 方式调用:注意,你不是在传递对象,而是传递字符串。
url_for('blueprint_name.func_name')