0

我刚刚开始在我的前端代码中添加一个后端,并认为烧瓶是一个很好的开始学习的框架。

我遇到的一件事是将信息提交给服务器进行处理。具体来说,我有一个单选按钮列表,我想向服务器发送用户在点击提交时检查的所有单选按钮的列表。然后服务器处理该信息并返回一个新页面。

这是表格:

<form action="{{ url_for('timeline') }}" method="post">
   {% for each_tag in tags %}
  <div class="checkbox">
      <label>
        <input type="checkbox" name="channel[]" value="{{each}}" >
        {{each_tag}} 
      </label>
  </div>    
{% endfor %} 

   <button type="submit"> submit </button>
</form>

以下是主flask文件中的相关函数:

@app.route('/')
@app.route('/index.html')
def checklist():
    for rownum in range(1,sh.nrows):
        row_values = sh.row_values(rownum)
        all_tags.add(row_values[7])

    return render_template('index.html', tags=all_tags)

@app.route('/timeline.html', methods=['POST','GET'])
def timeline(request):
    //do stuff with list of checked radio buttons
    return render_template('timeline.html')

我不确定信息是如何来回传递的。我可以将服务器信息发送到 html 模板,我认为一旦我了解了这个示例并弄清楚信息是如何从另一个方向传递的,我就可以开始做一些有趣的事情了。=)

4

1 回答 1

5

用尾随方括号 ( "channel[]") 命名复选框是 PHP 的事情,Flask 不需要。

只需在所有复选框中使用相同的名称:

<form action="{{ url_for('timeline') }}" method="post">
   {% for each_tag in tags %}
    <input type="checkbox" name="channel" value="{{each}}" >
   {% endfor %} 
    <button type="submit"> submit </button>
</form>

然后检索所选值的数组,使用request.form.getlist()

@app.route('/timeline.html', methods=['POST','GET'])
def timeline(request):
    checked = request.form.getlist('channel')

    # do something with checked array

    return render_template('timeline.html')
于 2013-10-24T00:54:28.110 回答