2011-08-10 18 views
1

私は初心者です。私はCGIで配列ベースのフィールドを扱う方法を知りたがっていますか?Pythonフォーム処理の問題

<form name="frmLogin" method="get" action=""> 
Username: <input type="text" name="login[username]" /><br/> 
Password: <input type="password" name="login[password]" /><br/> 
<input type="submit" name="login[submit]" /> 
</form> 

私は上記のような形をしています。 ログインフィールドを辞書として取得するにはどうすればよいですか?キーはユーザー名、パスワード、対応する値とともに送信されます。

私は、このことにより、個別に取得することができます=>形式[「ログイン[ユーザー名]」]。値 が、私は鍵を知らない場合、すなわち、チェックボックス[] は、私はポストを処理し、手動コーディングで操作する必要がありますかそれを行うための他の方法がありますか?

in php $ _GET ['login']は私に定義されたキー値の配列の配列を与えます、私はそのようなものが必要です。

ありがとうございました。

+0

あなたはなぜそれが必要なのか説明していただけますか?あなたが提供した 'login [xxx]'サンプルからは、 'form [" login "] [" username "]'と利用可能な 'form [" login [username] "]'の間に違いはない、 "login_username"] '。 – Helgi

答えて

0

cgi.FieldStorageは、あなたがPHPで説明したのと同じ方法を持っているとは思われません。

def get(form, prefix): 
    output = {} 
    def parse(key): 
     name = key.split('[')[1].rstrip(']') 
     output[name] = form[key] 
    map(parse, [key for key in form.keys() if key.startswith(prefix)] 
    return output 

だから、あなたのCGIで、それは次のようになります。ただし、[ATTR]あなたのフィールド名に持つ形式名前与え、同じことを達成するために、このような何かを書くことができます

form = cgi.FieldStorage() login_info = get(form, 'login') print login_info['username'] print login_info['password'] 
+0

ありがとうございました。私はしばらく検索した後、同じ考えをしています。これには内蔵されていないことを確認するだけですばらしいことでした。 – Shamsh