オプションですが、ユーザーに関連付ける必要がある複数のフォーム フィールドを渡しています。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 john_doe@example.com (123) 555-1234 Y Y
jane_roe jane_roe@example.com Y
george_jetson george_jetson@future.com (321) 555-4321 Y
FormDict は次のようになります。
{
'username':['john_doe','jane_roe','george_jetson'],
'email':['john_doe@example.com','jane_roe@example.com','george_jetson@future.com'],
'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 john_doe@example.com (123) 555-1234 Y Y
jane_roe jane_roe@example.com (321) 555-4321 Y Y
george_jetson george_jetson@future.com
ジェーンとジョージは私にかなり怒るだろう.
では...どうすれば空欄のままにして、適切な電話番号とリスト メンバーシップが適切なユーザーと一致するようにできるのでしょうか?
Web を検索して見つけたすべての回答には、GAE、Django、Tornado、Bottle などのフレームワークが含まれています。
ボトルは最軽量ですが、試してみましたが、Python 2.5 が必要で、2.4 にこだわっています。
これらのフレームワークでそれができるなら、それは可能でなければなりません。では、標準ライブラリだけでデータを適切に管理するにはどうすればよいでしょうか?
ありがとう。