2011-08-10 4 views
1

나는 초보자입니다. CGI에서 배열 기반 필드를 처리하는 방법을 알고 싶습니까?파이썬 폼 처리 문제

<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> 

나는 위와 같은 형식을 가지고 있습니다. 어떻게 사용자 이름, 암호, 키가 해당 값과 함께 제출 될 로그인 필드를 사전으로 가져올 수 있습니까?

내가이 개별적으로 얻을 수 => 형태 [ "로그인 [사용자 이름]"]. 값 하지만 내가 키를 잘 모릅니다 경우, 즉 체크 박스 [] 내가 게시물을 처리하고 수동 코딩에 의해 조작해야합니까 아니면 그것을 할 수있는 다른 방법이 있습니까?

php $ _GET [ 'login']는 나에게 정의 된 키 값 쌍의 배열을 줄 것이다. 나는 그런 것이 필요하다.

감사합니다.

+0

이유를 설명해주세요. 필자가 제공 한'login [xxx]'샘플에서'form [ "login"] [ "username"]'과 사용 가능한'form [ "login [username]"]'또는'form [ "login_username"]'. – Helgi

답변

0

cgi.FieldStorage에는 PHP에서 설명한 것과 비슷한 방법이 없다고 생각합니다. 그러나, 당신은 당신의 필드 이름에 주어진, 같은 일을 수행하기 위해 당신이 가지고있는 이름 [ATTR] 형식을 다음처럼 작성할 수 있습니다 :

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에서이 같은 보일 것이다 :

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

감사 마크, 잠시 검색 한 후에도 같은 생각입니다. 이 기능이 내장되어 있지 않은지 확인하는 것이 좋을 것입니다. – Shamsh