switch/toogle 导致 BadRequestKeyError: 400 Bad Request
Posted
技术标签:
【中文标题】switch/toogle 导致 BadRequestKeyError: 400 Bad Request【英文标题】:switch/toogle results in BadRequestKeyError: 400 Bad Request 【发布时间】:2021-11-04 08:35:21 【问题描述】:我有一个使用 python 和烧瓶生成的 index.html,它显示了一个列表。我想通过引导开关过滤这个列表。现在我有以下代码,它可以通过 GET 请求显示我的 index.html 列表。启用开关也可以工作并显示过滤列表。但是当切换回未过滤/关闭时,我收到了一个错误的请求。问题在于 switchvalue = request.form['switch'] 但我不明白为什么会这样。
Python 代码:
@app.route('/', methods=['POST', 'GET'])
def index():
conn = get_db_connection()
if request.method == 'POST':
switchvalue = request.form['switch']
flash(switchvalue)
if switchvalue == '1':
rows = conn.execute('SELECT Name, CAST (Points AS int) as Points, isActive FROM table WHERE isActive = "Active"').fetchall()
conn.close()
return render_template('index.html', rows=rows, switchcheck=1)
rows = conn.execute('SELECT Name, CAST (Points AS int) as Points, isActive FROM table').fetchall()
conn.close()
return render_template('index.html', rows=rows, switchcheck=0)
HTML:
...
% block content %
<h1>% block title % Title % endblock %</h1>
<form method="POST" action=" url_for('index') ">
<div class="custom-control custom-switch">
% if switchcheck == 0 %
<input type="checkbox" name="switch" onclick=this.form.submit() value="1" class="custom-control-input" id="customSwitch1">
% else %
<input type="checkbox" name="switch" onclick=this.form.submit() value="0" class="custom-control-input" id="customSwitch1" checked>
% endif %
<label class="custom-control-label" for="customSwitch1">Active</label>
</div>
</form>
% for row in rows %
...
【问题讨论】:
【参考方案1】:因此,开关的值似乎没有被发布,因为开关被作为复选框处理,并且当它们未被选中时,它们不会提交值。因此 submit.form(switch) 看不到数据。
我在这里找到了我的提示:How to utilize Bootstrap Ti Ta Toggle Checkbox with Flask
还提到使用带有 name=switch 的隐藏表单来处理这个问题,但对我来说没有成功。我的解决方法如下:
try:
switchvalue = request.form['vrswitch']
except:
switchvalue = 0
我敢打赌,有更优雅的方法可以做到这一点,但它确实有效!
【讨论】:
以上是关于switch/toogle 导致 BadRequestKeyError: 400 Bad Request的主要内容,如果未能解决你的问题,请参考以下文章
amazon redshift 并发写入导致插入记录,导致重复
FileHandler 创建会导致 NoSuchFileException 导致缺少 .lck
导致非标准行为的 #pragma 是不是会导致 __STDC__ 宏未定义为 1?
为啥 const int main = 195 会导致程序正常工作,但没有 const 会导致分段错误?
React 组件中的错误导致应用程序重新渲染,从而导致无限循环。为啥?
由于master宕机等导致resource调用出现异常,直接将该resource返回到pool以便其他代码使用会导致得到不可预期的结果,导致返回数据混乱。