localhost:8000으로 접속하면 다음과 같은 화면이 나오고

hello world를 쓴뒤 Post it 버튼을 누르면 다음과 같이 나타나게 하려면 어떻게 해야할까?

1. html string을 가지는 form 변수를 만든다.
form = '''<!DOCTYPE html>
<title>Message Board</title>
<form method="POST" action="http://localhost:8000/">
<textarea name="message"></textarea>
<br>
<button type="submit">Post it!</button>
</form>
'''
2. do_GET- form을 response로 준다.
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()
self.wfile.write(form.encode())
3. do_POST 부분
3.1. request의 entity body에 있는 message field를 가져온다.
length = int(self.headers.get('Content-length', 0))
data = self.rfile.read(length).decode()
message = parse_qs(data)["message"][0]
3.2 헤더를 설정한다. text/plain은 텍스트 파일 기본값이다.
self.send_response(200)
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()
3.3 message를 인코딩해서 보낸다.
self.wfile.write(message.encode())
main부분은 HelloServer예제와 같다.
do_GET과 do_POST가 같은 핸들러안에 정의되는 것이 특징이다.
MIME 타입(https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types)
'웹(web) > 백엔드-python' 카테고리의 다른 글
JSON (0) | 2020.07.02 |
---|---|
do_GET+ do_POST 예제2 (0) | 2020.07.01 |
parse_qs(POST data parsing) (0) | 2020.07.01 |
EchoServer (0) | 2020.07.01 |
HelloServer (0) | 2020.07.01 |