반응형

Server OS: Ubuntu 16.04

Flask, Python 3.5.2

Browser: Mozilla Firefox


Flask를 써서 웹페이지로부터 GET, POST 등의 요청(request) 처리하는 코드를 만들었는데, 이상하게 웹페이지에서 form을 이용해서 POST 요청을 보낼 때마다 화면에 400 에러만 나오고 실행이 되지 않았다. 브라우저 화면에 출력되는 자세한 메세지는 다음과 같다:


400 Bad request. The browser (or proxy) sent a request that this server could not understand.


이 경우는 서버의 flask에서 받아들여야 하는 POST parameter가 없을 때 발생한다. 웹페이지의 form에서 실제로 만들어서 submit하는 name과 value의 조합 중에서, 정작 flask에서 실제로 파싱해야 하는 파라미터의 값이 없는 경우이다.


따라서 웹페이지에서 사용자 입력을 통해서 만들어 보내는 form에서 전송하는 파라미터 이름의 목록과 flask에서 request.form['파라미터_이름']으로 받아들이는 목록이 일치하는지 확인하자.



반응형
블로그 이미지

Bryan_

,
반응형

Tools: flask, Jinja2, python 3.5.2


플라스크(flask)에서 웹페이지 템플릿 엔진으로 Jinja2를 쓰는데, flask에서 넘겨 주는 데이터의 값은 분명히 숫자인데 다른 숫자 변수와 단순 비교(==)로 안되는 것이었다. 아마 스트링으로 바뀐 것 같은데, int(변수명)이 Jinja2에서는 안 된다.


Jinja2 에서 변수의 데이터 타입 캐스팅을 하려면 변수명 뒤에 vertical bar(수직선) 문자( | )를 쓰고 데이터 타입을 명시하면 된다.


만약 flask에서 넘겨 주는 변수가 아래와 같다면,

my_var = '1234'


html 파일에서는 아래와 같이 정수로 바꿀 수 있다.

{{ my_var|int }}


이제 숫자로 비교할 수 있다.

{% if my_var|int == 1234 %}

    <div> my_var 의 값은 1234입니다. </div>

{% endif %}




반응형
블로그 이미지

Bryan_

,