选择与索引一起循环的单选按钮

时间:2018-08-20 20:39:17

标签: html pandas button flask jinja2

我有一个模板,我在其中传递熊猫数据框并遍历每一行以创建列式条目。我已经成功为每一行创建了嵌入式单选按钮表单。

我的问题在单选按钮中。我想选择一个单选按钮,说“匹配”,当我单击“提交”时,它将返回“您选择了匹配”。但是对于循环中的所有条目/行,我都会得到相同的消息,而不是选择“匹配”单选按钮的特定行。我需要获取基于索引的单选按钮提交。我该如何实现?

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'

0 个答案:

没有答案