Pregunta

Me modificar el inicio de sesión de aplicación de ejemplo flaskr, el primer error de línea de conseguir. Pero www.html está en el directorio de plantilla.

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

Error de visualización:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 
¿Fue útil?

Solución

return redirect(url_for('www')) funcionaría si tiene una función en otro lugar como este:

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

miradas url_for para una función, se le pasa el Nombre de la función que está deseando llamada. Piense en ello como esto:

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

También podría hacer return redirect('/some-url'), si eso es más fácil de recordar. También es posible que lo que quiere, dada su primera línea, es sólo return render_template('www.html').

Y también, no desde el comentario de shuaiyuancn a continuación, si está utilizando planos, url_for debe ser invocada como url_for('blueprint_name.func_name') Nota No está de paso del objeto, en lugar de la cadena. Véase la documentación aquí

Otros consejos

Si se asume que def www(): ya está definido (como lo sugiere sin montar de respuesta increíble), este error también puede ser lanzado si está utilizando un modelo que no ha sido registrada.

Asegúrese de registrar estos cuando se app primera instancia. Para mí se ha hecho de esta manera:

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)

Y dentro de 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!')

Me encontré con este error

  

BuildError: ( 'project_admin', {}, Ninguna)

cuando tuve una llamada como

return redirect(url_for('project_admin'))

en la que yo estaba tratando de hacer referencia a la función project_admin dentro de mi Blueprint. Para resolver el error, he añadido un punto antes del nombre de la función, así:

return redirect(url_for('.project_admin'))

y listo, mi problema fue solucionado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top