python-3.x - Bottle - 处理 POST 数据后重定向
问题描述
我正在使用瓶子来构建一个小型网络应用程序。我有一个简单的登录表单。如果身份验证不成功,我想留在登录表单上,否则导航到主页。但是,在处理登录表单 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 目标,那么我将回到第一方,因为在这种情况下,我需要重定向到“/”以在身份验证错误的情况下进行登录。
如何使重定向工作或以其他方式对此进行编码?
解决方案
看起来我错过了文档中的关键信息。重定向方法的工作原理是它引发 HTTPResponse 作为异常,而我的通用异常处理程序捕获了它。所以我通过将它添加到我的代码来解决它:
except bottle.HTTPResponse:
raise
推荐阅读
- php - 如何链接到页面的特定部分 HTML PHP
- c# - 当后端代码中的简单键值变量工作相同时,为什么要使用 redis 作为缓存层?
- google-apps-script - Google Slides Apps 脚本检索页面中的形状
- python-3.x - 在 KNeighborsClassifier 中使用自定义指标时,我不断收到“TypeError:只有整数标量数组可以转换为标量索引”
- java - JavaFX - 在使用选项卡时将 GUI 拆分为单独的类
- jquery - 通过函数调整电子窗口大小
- scheme - 匹配方案中的括号
- android - 当我使用 adb 显示 /sys/kernel/debug/tracing/available_filter_functions 时没有这样的设备
- python - 初始化以迭代抽象pyomo模型中的集合?
- angular-cli - 运行 ng serve -o 时出现错误