Получение пустых полей формы с помощью 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.
Если эти рамки могут это сделать, это должно быть возможно. Так как же мне правильно управлять своими данными только с помощью стандартной библиотеки?
Благодарю.