2012-01-17 4 views
10

매개 변수를 보내는 양식이 있습니다. 제 양식에는 확인란이 있습니다. 내 체크 박스가 선택되어 있지 않으면 매개 변수가 표시되지 않습니다.FLASK에 존재하지 않는 매개 변수에 대한 예외

var = request.form['mycheckbox'] 

을 내 확인란을 선택하지 않은 경우

그런 다음 디버그 모드에서 나는 오류 메시지 수 (매개 변수가 전달되지 않습니다) :

내 모듈에 나는 경우

잘못된 요청 브라우저 (또는 프록시)가이 서버 을 이해할 수 없다는 요청을 보냈습니다.

오류에 대한 정보는 없습니다.

나는 사용하여 예외를 방지 :

try: 
     var=request.form['checkbox'] 
    except: 
     var=None 

을하지만 플라스크는이 사건을 처리하는 방법의 동작을 변경할 수 없습니다?

답변

8

이유가 여기 플라스크 설명서에 숨겨져 :이 동작 모드 디버깅을 위해 변경되지 않는 이유를 잘 모르겠지만, WERKZEUG에서 BadRequestKeyError 예외를 잡기 위해 플라스크를 얻을 수 http://flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception

, 당신 응용 프로그램 개체에서 다음과 같이 실행해야합니다.

app.config['TRAP_BAD_REQUEST_ERRORS'] = True 
+1

나는 디버깅이 가능할 때 이것이 기본값이 될 수 있는지 확인하기 위해 https://github.com/mitsuhiko/flask/issues/382를 제출했다. –

+0

필자는 플라스크가 나에게 말하고 싶지 않았던 이유에 대해 당황 스러웠던 실망스러운 행동이라고 말해야한다. 티켓과 답을 열어 주셔서 감사합니다. – codyc4321

13
var = request.form.get('checkbox') 

매개 변수가 정의되지 않은 경우 None을 반환합니다.

+0

하여 해결! 고마워요 – leotesta

0

단일 부울 필드의 유효성을 검사하는 동안 유사한 문제가있었습니다.

나는 remember = form.rememberme.data를 사용하는 대신 그것 뿐이다 request.form['remember_me']