return redirect(url_for('www'))
funktionieren würde, wenn Sie eine Funktion irgendwo anders aussehen:
@app.route('/welcome')
def www():
return render_template('www.html')
url_for
für eine Funktion aussieht, können Sie es der Namen übergeben der Funktion, die Sie anrufen wollen, sind. Betrachten Sie es wie folgt aus:
@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'
Sie auch return redirect('/some-url')
tun könnte, wenn das leichter zu merken ist. Es ist auch möglich, dass das, was Sie wollen, gegeben Ihre erste Zeile, ist nur return render_template('www.html')
.
Und auch nicht aus Shuaiyuancns Kommentar unten, wenn Sie Blueprints verwenden, sollte url_for
als url_for(blueprint_name.func_name)
aufgerufen werden. See documentation here.
ich sehe, wirklich danke bvmou veru viel. – chenge
+1 für ein sehr klares Beispiel ... und für "nichts stärker als Gin vor dem Frühstück" –
Erleuchtung! Ich dachte, dass das Argument die URL ist. – swdev