LINUX.ORG.RU

Python Flask как сделать переход на другую «страницу»

 ,


0

1

Здравствуйте, коллеги!

Извините за глупый вопрос, но во Flask я еще разбираюсь очень слабо.

Мне нужно в функции обработки «страницы» в случае нехватки параметров, полученных из GET, сделать переход на стартовую страницу?

@app.route('/')
def index():
  # ...
  return render_template('index.html')

@app.route('disk')
def disk():
  if not request.args.get('id'):
      # Вот тут мне нужно сделать безусловный переход на '/'
      # Можно, конечно:
      return index()
      # но так останется мусор в строке браузера от остатков GET запроса. А мне бы хотелось сделать безусловный переход на '/'

Можно вернуть redirect, который ответит браузеру 3ХХ кодом и заголовком Location, говорящими что нужно перейти на другую страницу, что браузер и сделает

grazor ★★
()

return index()

Так точно не надо, потому что, есть

from flask redirect, url_for

@app.route('/')
def index():
    return redirect(url_for('login'), 301)

в случае нехватки параметров… А мне бы хотелось сделать безусловный переход

Это вам смотреть на мидлвари, как там организовано во Flask я хз, но в общем случае, так делать не надо, а надо вернуть ошибку 400 или 422.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Это вам смотреть на мидлвари, как там организовано во Flask я хз, но в общем случае, так делать не надо, а надо вернуть ошибку 400 или 422.

Вообще, Flask.redirect работает как-то очень странно…

HighMan
() автор топика