Ошибка колбы: werkzeug.routing.BuildError

Я изменяю логин примера приложения flaskr, в первой строке выдается ошибка. Но www.html находится в шаблоне dir.

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

ошибка дисплея:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 

3 ответа

Решение

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

А также, не из комментария shuaiyuancn ниже, если вы используете чертежи, url_for должен вызываться как url_for(blueprint_name.func_name), Смотрите документацию здесь.

При условии, что def www(): уже определено (как предполагает удивительный ответ unmounts), эта ошибка также может быть выдана, если вы используете план, который не был зарегистрирован.

Обязательно зарегистрируйте их, когда 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'))

и вуаля, моя проблема была решена.

Другие вопросы по тегам