Flask로 GET, POST 요청 보내기 (2)

HTML파일 리턴

Minwoo Kang
4 min readJun 7, 2018

저번 시간에는 GET, POST 요청을 보내는 예제를 했었습니다.

POST 요청을 보낸 뒤 입력 받은 값을 직접 리턴 시켜주었는데요. 그렇다면
이번에는 html 파일을 리턴 시켜볼까요?

전에 다뤘던 내용이지만 복습차원에서 한 번 더 하도록 하겠습니다.

소스 코드를 작성하기 전 ‘default’라는 이름을 가진 html 파일을 만들도록 하겠습니다.

프로젝트 파일

html 파일 내부는 이렇게 작성도록 할게요.

default.html

이제 app.py 에서 html 파일을 리턴시켜서 입력을 한 후에 ‘Reddit’이 보이도록 하면 되겠죠?

app.py

이렇게 하면 되겠죠? 실행시켜보도록 하겠습니다.

127.0.0.1:5000/post

역시 잘 나오네요!

그런데 이 부분 뭔가 불편하지 않나요?

app.py 중 일부

GET요청을 받는 ‘/test’라는 url이 있고 POST요청을 받는 ‘/post’라는 url이 따로 있습니다.

이것을 하나로 합칠 수는 없을까요? 하나의 url에서 GET요청과 POST요청을 모두 받을 수 있게 말이죠.

당연히 할 수 있습니다!! 그렇다면 소스를 간단하게 고쳐볼까요?

app.py

request.method라는 것은 처음 보실텐데요, 클라이언트에서 넘어온 method를 ‘GET’, ‘POST’ 로 각각 나누어 처리한 것입니다.

POST요청을 나눌 때 왜 else 를 쓰지 않고 elif 를 쓰는지 궁금하실 수도
있는데, methodGET, POST 만 있는 것이 아니라 PUT, DELETE 라는 method도 있기 때문에 elif로 나누어 주었습니다.

이렇게 한다면 ‘/test’ url에서 GET요청과 POST요청을 모두 받을 수 있겠군요.

여기서 잠깐! 실행시켜보신 분들은 정보를 입력 후 submit 버튼을 누르면 오류가 나셨을거예요.

127.0.0.1:5000/post

이렇게 말이죠… 왜 그럴까요?

이유는 바로 ‘post.html’ 이놈에게 있습니다.

어디가 문제인지 보기 위해서 html 파일을 열어보도록 할게요.

post.html

action 부분이 이상하군요. 저희는 분명히 ‘/post’ url을 없애고 ‘/test’ 라는 url로 GET, POST 요청을 받고 있는데 이 html 은 ‘/post’로 form을 보내고 있어요.

action 부분을 비우도록 하겠습니다.

post.html

이제 잘 실행이 되겠죠? 다시 실행시켜 보겠습니다.

127.0.0.1:5000/test

잘 실행이 되는군요!

이번 시간은 저번 시간에 이어 GET, POST 요청을 효과적으로 보내는 것에 대해 포스팅 해보았습니다. 이것으로 마치겠습니다.

--

--