【发布时间】:2016-09-13 01:25:23
【问题描述】:
Python/Flask/Bootstrap 新手在这里。我正在尝试构建一个网络应用程序来控制扬声器选择器。我正在使用引导程序和 Ti-Ta 切换来美化应用程序,但基本上它由 4-5 个复选框/切换组成。这是我的 HTML 现在的样子:
<form name="input" action="/" method="post">
<div class="row">
<div class="col-md-6">
<table class="table">
<tbody>
<tr>
<td>Living Room</td>
<td>
<div class="checkbox checkbox-slider-lg checkbox-slider--a checkbox-slider-info">
<label>
<input name="spkrs-00" type="checkbox" onclick="this.form.submit()" checked><span></span>
</label>
</div>
</td>
</tr>
<tr>
<td>Kitchen</td>
<td>
<div class="checkbox checkbox-slider-lg checkbox-slider--a checkbox-slider-info">
<label>
<input name="spkrs-01" type="checkbox" onclick="this.form.submit()"><span></span>
</label>
</div>
</td>
</tr>
<tr>
<td>Dining Room</td>
<td>
<div class="checkbox checkbox-slider-lg checkbox-slider--a checkbox-slider-info">
<label>
<input name="spkrs-02" type="checkbox" onclick="this.form.submit()"><span></span>
</label>
</div>
</td>
</tr>
<tr>
<td>Unconnected</td>
<td>
<div class="checkbox checkbox-slider-lg checkbox-slider--a checkbox-slider-info">
<label>
<input name="spkrs-03" type="checkbox" onclick="this.form.submit()" disabled><span></span>
</label>
</div>
</td>
</tr>
<tr>
<td>Protection</td>
<td>
<div class="checkbox checkbox-slider-lg checkbox-slider--a checkbox-slider-warning">
<label>
<input name="protection" type="checkbox" onclick="this.form.submit()"><span></span>
</label>
</div>
</td>
</tr>
</tbody>
</table>
</div>
所以,我想弄清楚的是如何处理来自 Python/Flask 应用程序中复选框输入的 POST 数据。我试图做一个简单的测试,如下所示:
from flask import Flask, request, render_template
import time
app = Flask(__name__)
@app.route('/', methods=['POST','GET'])
def change():
if request.method == 'POST':
spkr_00_state = request.args['spkrs-00']
spkr_01_state = request.args['spkrs-01']
spkr_02_state = request.args['spkrs-02']
protection_state = request.args['protection']
speaker_states = [spkrs_00_state, spkrs_01_state, spkrs_02_state, protection_state]
return render_template('index.html', speaker_states=speakers_states)
else:
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=80)
但是,我收到了错误的请求消息等。所以,我对它应该如何工作有点迷茫。我应该为每个切换创建单独的表单吗?我应该在 request.args 周围加上“try”if 语句吗?
【问题讨论】:
-
要获取帖子数据,您应该使用
request.form.get['whatever']。 accessing-request-data -
所以,我尝试了这个,但仍然遇到问题。复选框的行为方式,似乎它们只在选中时发布“打开”。未选中时,他们不会发布。因此,当我在该复选框为“关闭”时执行 request.form['spkrs_00'] 时,看起来 Flask 将其视为错误请求。
-
所以我认为this 回答了我的问题。我基本上必须在我的 HTML 中有一个隐藏的输入字段 '' 否则我会遇到烧瓶错误。
标签: python twitter-bootstrap checkbox flask