ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • form을 이용하여 데이터 송수신하기
    Python 2018. 11. 16. 04:15

    form을 이용하여 데이터 송수신하기

    HTML의 form태그를 이용하여 사용자로부터 데이터를 입력받고 입력받은 데이터를 서버로 전달해서 핸들링하는 방법을 알아볼 것이다.





     form 생성

    프로젝트 경로에 form.py라는 파일을 생성한다.


    그 후 아래의 내용을 작성한다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!python
    print("Content-Type: text/html charset=utf-8")
    print()
    print('''
    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
    <form action="process_create.py" method="POST">
        <input type="text" name="title" placeholder="title">
        <br>
        <textarea cols="21" rows="15" name="content" placeholder="content"></textarea>
        <br>
        <input type="submit" value="submit">
    </form>
    </body>
    </html>
    ''')
    cs


    1번 줄 - 

    #!python은 해당하는 파일이 python언어로 작성되었다라는 것을 의미한다.

    "#!"이를 shebang이라고 표현하는데 해당 스크립트 파일이 어떠한 언어로 작성되었는지를 판단한다고 한다.

    이후 그에 해당하는 언어의 인터프리터로 스크립트를 수행하도록 되어있다.


    2번 줄 - 

    웹 서버가 읽어들이는 이 파일이 text/html 파일이라는 것을 알게 하기 위해서 작성하는 헤더 정보이다.

    웹 서버에게 "이 파일(Content-Type)은 text/html로 구분짓고 해석하면 돼." 라고 알려주는 것이다.


    3번 줄 - 

    공백이다.


    4, 19번 줄 - 

    print()함수를 통해 HTML 템플릿을 표현하기 위해서 작은 따옴표 3개로 열고 닫고 그 안에 HTML 코드를 작성한다.


    10, 16번 줄 - 

    서버로 데이터를 전송하기 위해서 form으로 input태그를 묶고 전달할 서버 정보(action=)를 작성하고 이를 POST(method)로 보낸다.



    이를 작성하면 아래와 같은 폼이 그려질 것이다.






     데이터 처리 페이지 생성

    이제 데이터를 작성하고 전송할 form을 생성했으니 데이터를 전달받고 처리할 서버 페이지를 작성해보자.


    process_create.py라는 이름으로 파일을 생성하자.


    그 후 아래의 내용을 작성하자.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!python
    print("Content-Type: text/html")
    print()
     
    import cgi
    form = cgi.FieldStorage()
    title = form["title"].value
    content = form["content"].value
     
    print(title, content)
    cs


    1번 줄 - 

    shebang을 작성하여 python 스크립트라는 것을 선언한다.


    2번 줄 - 

    웹 서버가 해당 파일을 text/html로 읽어들이고 처리할 수 있도록 헤더 정보를 선언한다.


    5번 줄 - 

    서버에서 응답처리를 하기 위해 cgi 모듈을 import한다.


    *CGI란

    CGI란 공통 게이트웨이 인터페이스(common gateway interface)의 약어로, 웹서버와 외부 프로그램 사이에서 정보를 주고받는 방법이나 규약들을 말한다.

    사용자의 요청에 서버가 응답하기 위한 웹 브라우저와 웹 서버간의 통신을 위한 상호작용 프로그램이다.


    6번 줄 -

    서버로 전달받은 질의 문자열(Query String)을 읽고 처리할 수 있도록 cgi모듈의 FieldStorage()라는 객체를 생성한다.


    fieldStorage()객체를 출력해보면 아래와 같이 쿼리 스트링이 포함되어 있다는 것을 알 수 있다.


    사용자가 전달한 정보들이 fieldStorage라는 공간에 담아져서 서버로 전달된다는 것을 알 수 있다.


    7번 줄 - 

    필드 저장소에서 title이라는 이름으로 전달된 쿼리 스트링의 값을 변수에 담는다.


    8번 줄 -

    마찬가지로 필드 저장소에서 content라는 이름으로 전달된 쿼리 스트링의 값을 변수에 담는다.


    10번 줄 - 

    사용자로부터 전달받은 데이터들을 출력한다.





     실행

    이제 만들어진 폼을 이용해 데이터를 작성하고 서버로 전달해보고, 서버에서 전달받은 사용자 데이터를 화면에 출력해보자.


    작성했던 form.py에 접속해서 title과 content에 내용을 작성하고 submit버튼을 눌러보자.



    form태그의 action 속성에 의해 process_create.py 서버 페이지로 이동하게되며 해당 서버로 전달한 데이터가 화면에 출력되는 것을 알 수 있다.




    'Python' 카테고리의 다른 글

    파일 목록 출력하기  (0) 2018.11.16
    파일 생성하기  (0) 2018.11.16
    문법 - 반복문  (0) 2018.11.15
    문법 - Dictionary  (0) 2018.11.14
    문법 - list  (0) 2018.11.14
Designed by Tistory.