Domanda

I modificare il login di applicazione del campione flaskr, il primo errore di linea get. Ma www.html è nel modello dir.

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

errore di visualizzazione:

werkzeug.routing.BuildError

BuildError: ('www', {}, None) 
È stato utile?

Soluzione

return redirect(url_for('www')) funzionerebbe se si dispone di una funzione da qualche altra parte in questo modo:

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

sguardi url_for per una funzione, si passa al nome della funzione si vogliono chiamata. Pensate a come questo:

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

Si potrebbe anche fare return redirect('/some-url'), se questo è più facile da ricordare. E 'anche possibile che ciò che si vuole, dato la prima linea, è solo return render_template('www.html').

E anche, non dal commento di shuaiyuancn qui sotto, se si sta utilizzando i modelli, url_for dovrebbe essere invocato come url_for('blueprint_name.func_name') Nota che non sta passando l'oggetto, piuttosto la stringa. Vedere documentazione qui

Altri suggerimenti

Supponendo che def www(): è già definito (come suggerito da non montate di risposta impressionante), questo errore può anche essere lanciate se si utilizza un modello che non è stato registrato.

Assicurati di registrare questi quando app in primo luogo è istanziato. Per me è stato fatto in questo modo:

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)

E nel giro di 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!')

mi sono imbattuto in questo errore

  

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

quando ho avuto una chiamata come

return redirect(url_for('project_admin'))

in cui stavo cercando di fare riferimento alla funzione project_admin nel mio Blueprint. Per risolvere l'errore, ho aggiunto un punto prima del nome della funzione, in questo modo:

return redirect(url_for('.project_admin'))

e voilà, il mio problema è stato risolto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top