使用flask,jinja2将html复选框值存储到列表中

时间:2018-10-22 00:32:41

标签: javascript jquery python-3.x flask jinja2

我需要一些帮助。我正在使用flask,并且我有一个带有一堆复选框的HTML页面。它们按照选项1,选项2和选项3的顺序排列,然后在选项下有多个复选框需要检查。我试图跟踪已选中所有框的选项,然后将该信息存储到列表中。

目前,我的逻辑是使用Jinja2在HTML文件中使用一些for循环,并尝试以诸如 name =“ {{getboxitem}}” 的形式设置一些唯一的名称标签。仅在option1上垂直工作,但是如果我在option2和option3中选中了一个框,它就无法跟踪。有什么建议可以解决这个问题。

另外,与此有关的另一件奇怪的事情是,当我通过request进行请求时,我可以清楚地看到我的复选框表单的名称为“ option2checkbox1”,但是在python路由中。将该值设置为无,就好像该值不存在一样。

Example:

Option1              Option2              Option3
-------------        --------------       -----------
    [] Not Checked      []not checked        [*]Checked
    [*] Checked         [*]not checked       [*]Checked





@app.route('/performance_features_ixia', methods=['GET', 'POST'])
def performance_features_ixia():


    option2checkbox1 = request.form.get('option2checkbox1')
    print('option2checkbox1 is {}'.format(option2checkbox1))

这是我的HTML文件

{% for items in rtr_intfs %}

        {% set getboxitem = items + 'checkbox1' %}


     <div class="col-sm-3">

        {%if loop.index > 4 %}
          <br><br>
        {% endif %}

      <p>{{items}}</p>
      <hr style="border: 2px solid#5b9aa0;" />
      <div id="checkboxes">

       <form role="form" action="{{ url_for('performance_features_ixia') }}" name='checkboxform' method="POST" >

        <ul name="listformcheckbox">
            <li>
                <div class="checkbox form-check">
                    <input type="checkbox" name="{{getboxitem}}" id='myCheck' class="check ingress-check form-check-input"> check box option
                    </label>
                </div>
            </li>
        </ul>

         {% if loop.index == 1%}
         <br>
            <button class="btn btn-info btn-lg" type="submit">Submit</button>
        {% endif %}

        </form>
    </div>

</div>

    {% endfor %}

1 个答案:

答案 0 :(得分:1)

答案是在表单下移动for循环。调试后,我意识到我正在创建三个表单,看起来就像我执行request.form.get时所要查找的表单一样。

    {% for items in rtr_intfs %}




         <div class="col-sm-3">

            {%if loop.index > 4 %}
              <br><br>
            {% endif %}

          <p>{{items}}</p>
          <hr style="border: 2px solid#5b9aa0;" />
          <div id="checkboxes">

           <form role="form" action="{{ url_for('performance_features_ixia') }}" 
name='checkboxform' method="POST" >
{% set getboxitem = items + 'checkbox1' %}

            <ul name="listformcheckbox">
                <li>
                    <div class="checkbox form-check">
                        <input type="checkbox" name="{{getboxitem}}" id='myCheck' class="check ingress-check form-check-input"> check box option
                        </label>
                    </div>
                </li>
            </ul>

             {% if loop.index == 1%}
             <br>
                <button class="btn btn-info btn-lg" type="submit">Submit</button>
            {% endif %}
{% endfor %}


            </form>
        </div>

    </div>