Question

Je modifier la connexion de l'application de l'échantillon de flaskr, la première erreur get ligne. Mais www.html est dans le modèle dir.

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

erreur d'affichage:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 
Était-ce utile?

La solution

return redirect(url_for('www')) fonctionnerait si vous avez une fonction un autre endroit comme celui-ci:

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

ressemble url_for pour une fonction, vous transmettez-lui le nom de la fonction que vous êtes désireux d'appel. Pensez-y comme ceci:

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

Vous pouvez également faire return redirect('/some-url'), si cela est plus facile à retenir. Il est également possible que ce que vous voulez, étant donné votre première ligne, est juste return render_template('www.html').

Et aussi, pas de commentaire de shuaiyuancn ci-dessous, si vous utilisez des plans, url_for doit être invoquée comme url_for('blueprint_name.func_name') Notez que vous n'êtes pas passer l'objet, plutôt la chaîne. Voir la documentation

Autres conseils

En supposant que def www(): est déjà défini (comme l'a suggéré de réponse non montés) impressionnante, cette erreur peut également être catapultés si vous utilisez un plan qui n'a pas été enregistré.

Assurez-vous d'inscrire ces derniers quand app est d'abord instancié. Pour moi, il a été fait comme ceci:

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)

Et dans les 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!')

Je suis tombé sur cette erreur

  

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

quand j'avais un appel comme

return redirect(url_for('project_admin'))

dans lequel je tentais de faire référence à la fonction project_admin dans mon Plan. Pour résoudre l'erreur, j'ai ajouté un point avant le nom de la fonction, comme ceci:

return redirect(url_for('.project_admin'))

et le tour est joué, mon problème a été résolu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top