我修改了Flaskr示例应用程序的登录,第一行获取错误。但是www.html在模板dir中。

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

显示错误:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 
有帮助吗?

解决方案

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').

而且,如果您使用的是蓝图,则不是在下面的评论中 url_for 应该被调用为 url_for('blueprint_name.func_name') 请注意,您没有传递对象,而是字符串。 请参阅此处的文档.

其他提示

假如说 def www(): 已经定义了(如Unmounted的真棒答案所建议),也可以抛出此错误 如果您使用的是尚未注册的蓝图。

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

我遇到了这个错误

builderror :('project_admin',{},无)

当我打电话时

return redirect(url_for('project_admin'))

我试图参考 project_admin 在我的蓝图中功能。为了解决错误,我在函数的名称之前添加了一个点,例如:

return redirect(url_for('.project_admin'))

瞧,我的问题得到了解决。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top