1

I'm in need of some help. I am using flask and I have had an HTML page with a bunch of checkboxes. They are ordered as option1, option2, and option3 and then under the options, there are a number of boxes to check. I am trying to keep track of what all boxes have been checked for which option and store that information into a list.

currently my logic is to use some for loop within the HTML file using Jinja2 and try to set some unique name tag in the form such as name="{{getboxitem}}" However my logic is only working vertically across option1 but its not able to track if I have checked a box in option2 and option3. Is there any suggestions that could help resolve this.

Also, one other strange thing about this is I can clearly see the name of my checkbox form is "option2checkbox1" however in the python route when I request this via request. forms its setting to none as if the value is not existing.

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))

Here is my HTML file

{% 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
  • checkboxes only return a value if checked. Unchecked boxes do not return in post method. I would suggest giving all checkboxes a unique name and on post check which checkboxes are returned? Commented Oct 23, 2018 at 10:56

1 Answer 1

1

The Answer was to move the for loop under the form. After debugging I realized I was creating three form's so looks like when I do the request.form.get it was not in the form it was looking for.

    {% 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>
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.