Chyba baňka: werkzeug.routing.BuildError

hlasů
52

I změnit login flaskr ukázkové aplikace, první řádek dostat chybu. Ale www.html do šablony dir.

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

poruchová hlášení:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 
Položena 10/09/2010 v 09:15
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
121

return redirect(url_for('www')) bude fungovat, pokud máte funkci někde jinde takto:

@app.route('/welcome')
def www():
    return render_template('www.html')

url_forhledá funkce, můžete ji předat název funkce, který chce volat. Myslete na to takhle:

@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'

Dalo by se také provést return redirect('/some-url'), pokud je to jednodušší si pamatovat. Je také možné, že to, co chcete, dali svůj první řádek, je prostě return render_template('www.html').

A také, ne z komentáři shuaiyuancn lidové níže, pokud používáte plány, url_forby měla být uplatněna jako url_for(blueprint_name.func_name). Podrobnosti naleznete v dokumentaci zde .

Odpovězeno 10/09/2010 v 10:31
zdroj uživatelem

hlasů
2

Za předpokladu, že def www():je již definován (jak navrhl odpojené je úžasné odpovědi), tato chyba může být také vyvolána , pokud používáte plán, který nebyl registrován.

Ujistěte se, že registrovat ty, když appse poprvé instance. Pro mě to bylo provedeno takto:

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)

A v rámci 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!')
Odpovězeno 22/08/2017 v 22:39
zdroj uživatelem

hlasů
2

Narazil jsem na tuto chybu

BuildError: ( 'project_admin' {}, žádná)

když jsem měl hovor podobného

return redirect(url_for('project_admin'))

ve kterém jsem se snaží odkazovat na project_adminfunkci v mém Blueprint. Chcete-li chybu, přidal jsem tečku před jménem funkce, jako je tento:

return redirect(url_for('.project_admin'))

a voila, můj problém byl vyřešen.

Odpovězeno 26/10/2018 v 21:29
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more