2011-08-30 3 views
2

Django framework. Html-форма. view.py.Проверка формы и MultiValueDictKeyError

У меня есть форма с несколькими флажками, пользователь выбирает флажок в соответствии с файлами, которые они хотели бы загрузить в zip-файле. Когда все ящики проверяются, почтовый файл создается и возможность загрузки, однако всякий раз, когда флажок снят, я получаю следующее сообщение об ошибке:

MultiValueDictKeyError в/qatools/Debug/журналы/ Key «бревна» не найден в QueryDict:

Мое подтверждение заключается в следующем. Он определяет, был ли установлен флажок, и назначает либо 0, либо 1, как и в том формате, который он вызывает сценарий оболочки.

logs = 0 
    if request.POST.get & request.POST['logs'] == "on": 
     logs = 1 
+0

Никогда не возражает, установил его .. Должно быть: журналов = 0 если «бревна» в request.POST и request.POST [ «журналов»] == "on": logs = 1 – smurf

+0

Более короткий способ выполнить оператор if: 'if request.POST.get ('logs') ==" on ":' поскольку 'get' - это функция, которая по умолчанию будет None, если ключ не существует. См. [QueryDict docs] (https://docs.djangoproject.com/en/1.3/ref/request-response/#django.http.QueryDict). – eric

ответ

3

Это стандартная проблема с HTML-формами ... на POST непроверенный флажок НЕ СУЩЕСТВУЕТ в значениях POST, не имеют значение «выключено», как и ожидалось. Так что вам нужно проверить наличие:

logs = 0 
if request.POST.get and 'logs' in request.POST and request.POST['logs'] == "on": 
    logs = 1 
+0

Да, я понял! Не позволил бы мне ответить. Спасибо за ответ в любом случае! – smurf

+1

Вы все равно должны принять ответ ... –

Смежные вопросы