我有一个模板,我在其中传递熊猫数据框并遍历每一行以创建列式条目。我已经成功为每一行创建了嵌入式单选按钮表单。
我的问题在单选按钮中。我想选择一个单选按钮,说“匹配”,当我单击“提交”时,它将返回“您选择了匹配”。但是对于循环中的所有条目/行,我都会得到相同的消息,而不是选择“匹配”单选按钮的特定行。我需要获取基于索引的单选按钮提交。我该如何实现?
EDIT1 :我尝试运行此代码以某种方式通过循环的索引链接表单,但我不断遇到KeyError: options0
错误(将索引值替换为行)索引)。
app.py代码:
@app.route('/',methods=['GET', 'POST'])
@login_required
def home():
options = ''
x = pd.read_csv('file_name.csv')
if request.method == 'POST':
for i in range(x.count()[0]):
if request.form['options'+str(i)] == 'match':
options = 'You selected Match'
elif request.form['options'+str(i)] == 'notMatch':
options = 'You selected Not Match'
else:
options = 'You selected IDK'
return render_template('index.html', data=x, options=options)
html代码:
{% for index,row in data.iterrows() %}
... Other code ...
<form action="" method="post">
<div class="col">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="options{{index}}" value="match">
<label class="form-check-label" for="match">Match</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="options{{index}}" value="notMatch">
<label class="form-check-label" for="notMatch">Not Match</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="options{{index}}" value="idk">
<label class="form-check-label" for="idk">IDK</label>
</div>
<button type="submit" class="btn btn-primary" name="submit" value="submit">Submit</button>
<button type="submit" class="btn btn-danger"name="reset" value="reset">Reset</button>
</div>
</form>
{% endfor %}
EDIT2 :经过一番摆弄之后,我发现问题出在app.py代码中。索引是从html正确传递的,如果我对索引值进行硬编码,则按钮将起作用。但是我无法以自动方式在请求调用中传递经过校正和递增的索引值,例如:
for i in range(x.count()[0]):
if requests.form['options{}'.format(i)] == 'match':
options = 'You selected Match'