2013-07-19 3 views
11

설명서를 살펴 봤지만 플라스크의 request.form 개체가 어떻게 채워지는지 알 수는 없습니다. The documentation은 POST 또는 PUT 요청의 구문 분석 된 양식 데이터로 채워지지만 양식은 동적이므로 POST 요청을 보낼 때 어떤 필드가 존재하는지 알 필요가 없습니다. 이러한 필드의 정보를 추가하고 싶지만 데이터베이스에.flask.request.form의 동적 양식 필드

양식의 일부 필드는 항상 있지만 일부 필드에는 약 60 개의 추가 필드가 있습니다. 요청에 포함 된 추가 필드와 방법을 파악하려면 어떻게해야합니까? 그들로부터 데이터를 얻어야합니까?

편집 : 내 특정 문제가 해결되었지만 request.form 사전을 채우는 방법을 묻는 것이 좋습니다. 나는 체크 박스 입력이 체크되어 있지 않다면 그 이름 아래에 사전에 추가 된 키가없고, 사전 결과에 존재하지 않는 키의 값을 얻으려고하면 오히려 혼란스럽고 어리 석다는 어려운 방법을 발견했다. HTTP 400 BAD REQUEST 오류.

+0

request.form에 표시되는 값은 브라우저가 보내는 데이터에 따라 다릅니다. 체크 박스가 체크되어 있지 않을 때 키를 보내지 않기로 결정한 것은 Flask가 아니라 브라우저가 결정합니다. –

+0

새로운 질문에 대한 새로운 질문을 열면 가장 좋다고 생각합니다. –

답변

19

request.formMultiDict 개체를 반환합니다. 기본적으로 1 키의 경우 여러 값을 가질 수 있습니다. 당신이 당신의 폼 POST의 모습을 테스트 할 경우 MultiDict에 대한 설명서를 읽어 보면

f = request.form 
for key in f.keys(): 
    for value in f.getlist(key): 
     print key,":",value 

을 다음과 같이 그냥 빨리 인쇄 문을, 그것은

을 말한다 "A MultiDict는 맞춤형 사전 서브 클래스입니다 래퍼에서 파싱 함수에 의해 사용되는, 예를 들면 동일한 키에 대한 복수의 값으로 취급한다. 일부 HTML 폼 요소가 동일한 키에 대한 복수의 값을 전달하기 때문에 필요한 것이다. "

http://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.MultiDict

,617,
+0

나는'request.form'가 일반적인 파이썬 사전처럼 ('dict'의 종류를 반환하기는하지만) 어떻게 해석되는지 처음 보면 알 수 있습니다 (기여). ''f'를 인쇄하려고한다면'튜플 '), 그 대답은 Flask MultiDict의 예제와 정의에 관해서는 많은 의미가 있습니다. 고마워, #codegeek :). – ivanleoncz