Bottle - 处理 POST 数据后重定向

Bottle - redirect after processing POST data

我正在使用 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 

如果我将我在 login.html 上的表单定位到 /main_app 作为 POST 目标,那么我回到原点,因为在那种情况下我需要重定向到“/”进行登录,以防身份验证错误。

如何使重定向工作或以其他方式对此进行编码?

看来我错过了文档中的一个关键信息。 redirect 方法的工作原理是它引发 HTTPResponse 作为异常,我的通用异常处理程序捕获了它。所以我通过将此添加到我的代码来解决它:

except bottle.HTTPResponse:
        raise