我正在使用Bottle来构建一个小型Web应用程序。我有一个简单的登录表格。如果身份验证不成功,我想保留登录表单,否则导航到主页。但是,在处理登录表单的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目标,那么我将回到第一个方框,因为在这种情况下,为了进行身份验证,我需要重定向到“ /”进行登录错误。
我如何使重定向工作或以其他方式对此进行编码?
似乎我错过了文档中的关键信息。wat redirect方法起作用的原因是它引发了一个HTTPResponse作为异常,而我的通用异常处理程序捕获了该异常。因此,我通过将其添加到我的代码中来解决了它:
except bottle.HTTPResponse:
raise