python - meaning - flask wikipedia
Error de matraz: werkzeug.routing.BuildError (2)
Asumiendo que def www():
ya está definido (como lo sugiere la respuesta asombrosa de unmounted), este error también puede producirse si está utilizando un blueprint que no se ha registrado.
Asegúrese de registrarlos cuando la app
se crea por primera vez. Para mí fue hecho así:
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!'')
Modifico el inicio de sesión de la aplicación de muestra flaskr, el error de obtención de la primera línea. Pero www.html está en el directorio de plantillas.
return redirect(url_for(''www''))
#return redirect(url_for(''show_entries''))
pantalla de error:
werkzeug.routing.BuildError
BuildError: (''www'', {}, None)
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'')
url_for
busca una función, le pasa el nombre de la función que desea llamar. Piensa en esto, de esta manera:
@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 una return redirect(''/some-url'')
, si eso es más fácil de recordar. También es posible que lo que desee, dada su primera línea, sea simplemente return render_template(''www.html'')
.
Y también, no del comentario de shuaiyuancn a continuación, si está utilizando blueprints, url_for
debe invocarse como url_for(blueprint_name.func_name)
. Ver documentación aquí .