Bottle - перенаправление после обработки данных POST - PullRequest
0 голосов
/ 27 марта 2020

Я использую bottle для создания крошечного веб-приложения. У меня есть простая форма входа в систему. Я хочу остаться в форме входа, если аутентификация не удалась, в противном случае перейдите на главную страницу. Однако в функции, обрабатывающей POST формы входа, похоже, что она просто игнорирует перенаправление:

@route('/')
@view('login.html')
def promotool():
    return {'error': 'none'}

@route('/login', method="POST")
@view('login.html')
def login():
    try:
        if auth_success:
            bottle.redirect('/main_app')
        return {'error': 'LoginError'}
    except:
        return {'error': 'LoginError'}

После этого в журнале сервера я вижу только POST, но не перенаправление:

"POST /login HTTP/1.1" 200 4032 

Если я нацеливаю свою форму при входе в систему. html на / main_app в качестве цели POST, то я вернусь к исходной точке, потому что в этом случае мне нужно будет перенаправить на "/", чтобы сделать логин в случае ошибки аутентификации.

Как мне сделать так, чтобы перенаправление работало или иным образом закодировать это?

1 Ответ

0 голосов
/ 28 марта 2020

Похоже, я пропустил ключевую информацию из документации. Метод редиректа работает так: он вызывает HTTPResponse как исключение, и мой обработчик исключений c это поймал. Поэтому я решил это, добавив это в мой код:

except bottle.HTTPResponse:
        raise
...