Ошибка колбы: werkzeug.маршрутизирующий.Строитель
Я изменяю логин приложения flaskr sample, первая строка получает ошибку. Но оч.html находится в шаблоне реж.
return redirect(url_for('www'))
#return redirect(url_for('show_entries'))
дисплей ошибка:
werkzeug.routing.BuildError
BuildError: ('www', {}, None)
2 ответа:
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():
уже определен (как предложено удивительным ответом 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!')