сохранить значение html-чекбокса в список с помощью flask, jinja2 - PullRequest
0 голосов
/ 22 октября 2018

Мне нужна помощь.Я использую флягу, и у меня была HTML-страница с кучей флажков.Они упорядочены как option1, option2 и option3, а затем под опциями есть несколько полей для проверки.Я пытаюсь отследить, какие флажки были отмечены для какой опции, и сохранить эту информацию в списке.

В настоящее время моя логика заключается в том, чтобы использовать цикл for в файле HTML с использованием Jinja2 и попытаться установить уникальный тег имени в форме, такой как name = "{{getboxitem}}" ОднакоМоя логика работает только вертикально по варианту 1, но она не может отследить, если я установил флажок в вариантах 2 и 3.Есть ли какие-либо предложения, которые могли бы помочь решить эту проблему.

Кроме того, еще одна странная вещь в этом - я могу ясно видеть, что название моей формы флажка - "option2checkbox1", однако в маршруте python, когда я запрашиваю это через запрос,устанавливает его в значение none, как будто значение не существует.

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 голосов
/ 24 октября 2018

Ответ состоял в том, чтобы переместить цикл 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>
...