Блог

Python/Django: form получить все checkbox

Банальная задача, но почему-то очень часто встречаешь вопросы. “Как получить список checkbox-ов POST или GET во вьюхах Django?”.К примеру у нас есть шаблон:

{% for item in listItems %}
   {% if item %}
      <input type="checkbox" name="item" value="{{ item }}" /> {{ item }}<br />
   {% endif %}
{% endfor %}

Чтобы получить список достаточно выполнить:

print [ val for val in request.POST.getlist('item')]

QueryDict.getitem(ключ) Возвращает значение для данного ключа. Если ключ имеет более чем одно значение, getitem() возвращает последнее значение.
QueryDict.getlist(ключ) возвращает данные с запрашиваемой ключевой в виде списка Python. Возвращает пустой список, если ключ не существует.

По этому каждый раз, когда вы пытаетесь получить значение, вы получаете последнее значение из списка.