Вопрос

Я изменив вход в систему приложения Flakrashr пример, первая строка получила ошибку. Но 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(): уже определяется (как предложено удивительным ответом от размонтированного), эта ошибка также может быть брошена Если вы используете план, который не был зарегистрирован.

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

Когда у меня был такой звонок

return redirect(url_for('project_admin'))

в котором я пытался ссылаться project_admin функция в моем проекте. Чтобы разрешить ошибку, я добавил точку перед именем функции, как это:

return redirect(url_for('.project_admin'))

И Вуаля, моя проблема была решена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top