Получение пустых полей формы с помощью Python cgi stdlib

Я передаю несколько полей формы, которые не являются обязательными, но которые должны быть связаны с пользователем. В Python cgi.FormDict и cgi.FieldStorage устраняются пустые записи, поэтому элементы перемещаются «вверх» и связываются с неверным пользователем.

Эта проблема чаще всего обнаруживается с флажками (которые у меня есть), но у меня также есть текстовые поля.

Упрощенный код формы:

<input type="text" name="user" />
<input type="text" name="email" />
<input type="text" name="phone" />
<input type="checkbox" value="MailingList1" />
<input type="checkbox" value="MailingList2" />
<p>
<input type="text" name="user" />
<input type="text" name="email" />
<input type="text" name="phone" />
<input type="checkbox" value="MailingList1" />
<input type="checkbox" value="MailingList2" />
etc...

Пользователи должны вводить ЛЮБУЮ электронную почту или телефон (или оба), но могут оставить другие поля пустыми.

Теперь скажите, что у меня есть такой ввод:

john_doe         [email protected]        (123) 555-1234    Y    Y
jane_roe         [email protected]                          Y
george_jetson    [email protected]    (321) 555-4321         Y

FormDict выглядит примерно так:

{
'username':['john_doe','jane_roe','george_jetson'],
'email':['[email protected]','[email protected]','[email protected]'],
'phone':['(123) 555-1234','(321) 555-4321'],
'MailingList1':['Y','Y'],
'MailingList2':['Y','Y']
}

Я перебираю вот так:

for i in range(len(myFormDict['username'])):
    username = myFormDict['username'][i]
    email = myFormDict['email'][i]
    phone = myFormDict['phone'][i]
    MailingList1 = myFormDict['MailingList1'][i]
    MailingList2 = myFormDict['MailingList2'][i]

    ...Inserts into the database

Прежде чем вы спросите: «Да, у меня есть сообщения об ошибках, чтобы не допустить его выхода из конца списков и всего остального». Код работает нормально, но моя база данных выглядит так:

john_doe         [email protected]        (123) 555-1234    Y    Y
jane_roe         [email protected]        (321) 555-4321    Y    Y
george_jetson    [email protected]

Джейн и Джордж будут очень злиться на меня.

Итак ... как мне сохранить пробелы, чтобы правильные номера телефонов и список участников соответствовали нужным пользователям?

Все ответы, которые я нашел при поиске в Интернете, включают такие фреймворки, как GAE, Django, Tornado, Bottle и т. Д.

Бутылка имеет самый легкий вес, но я попробовал ее, и она требует Python 2.5, и я застрял на 2.4.

Если эти рамки могут это сделать, это должно быть возможно. Так как же мне правильно управлять своими данными только с помощью стандартной библиотеки?

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос