return redirect(url_for('www'))
будет работать, если у вас есть функция в другом месте, например:
@app.route('/welcome')
def www():
return render_template('www.html')
url_for
ищет функцию, вы передаете ей имя функции, которую выхотят позвонить.Подумайте об этом так:
@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'
Вы также можете сделать return redirect('/some-url')
, если это легче запомнить.Также возможно, что вы хотите, учитывая вашу первую строку, просто return render_template('www.html')
.
А также, не из комментария shuaiyuancn ниже, если вы используете чертежи, url_for
должен вызываться как url_for('blueprint_name.func_name')
Обратите внимание, что вы не передаете объект, а скорее строку. См. Документацию здесь .