ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Introduction of Flask & Develop Web Application
    웹프로그래밍/Flask(Python) 2021. 4. 12. 17:36
    반응형

    Flask는 파이썬 기반 웹 프레임워크로(Web Framework for Python), 소규모 네트워크 기반 웹 어플리케이션을 제작할 때 빠른 시간내에 웹을 구축할 수 있는 큰 장점을 가지고 있다.

    Armin Ronacher에 의해 개발되었으며, 웹 개발에 있어서 특별한 도구나 라이브러리가 따로 필요 없기에, 마이크로 프레임워크라고도 불린다. 즉, 이게 무슨 말이냐, React, Mysql, Ajax, SSE(Server Sent Event), 양식 유효성 확인을 독자적으로 구현하는 Django, Tornado 등 다른 웹 프레임 워크와 달리, Python Library를 통해 데이터 처리를 하고 처리 결과에 대해 포맷만 맞추면 원하는 동작을 할 수 있다는 것이다.

    Library에서 제공하는 편의성을 어느 정도 감수하지만, 웹을 커스터마이징 할 수 있다는 것이다.

     

    저자는 Flask로 5개 가량의 Web Application을 구축 해보았으며, 이 경험을 바탕으로 초보 웹 개발자에게 도움이 될 수 있는 글을 작성하려고 한다.

     

    첫 시간에는 Flask가 웹 어플리케이션으로 동작 할 수 있는 환경을 간단하게 구현해보자.

     


    1. Flask Importing

    from flask import Flask

    Flask를 flask 라이브러리로 부터 호출하는 부분이다. Flask는 플라스크 어플리케이션 환경을 구축하기 위해 가져왔다.

     

    그럼 이제 플라스크 어플리케이션 객체을 설정해보자.

     

    2. Application from Flask

    app = Flask(__name__, static_url_path='/static')
    app.secret_key = b'_5#aby2L"F4Q8z\n\xec]'

    app이라는 객체는 앞서 언급한 '플라스크 어플리케이션 객체'가 된다.

    이후, 악의적인 사용자가 서버의 session 객체에 접근하지 못하게 하기 위해 secret_key를 선언한다.

    session은 사용자의 ID, PW를 포함한 다양한 민감 정보가 포함되기 때문에, secret_key로부터 보호되어야 한다.

     

    한 마디로, 서버만 secret_key를 알고 있어서, session에 접근이 가능하다.

    이제 플라스크 어플리케이션을 실행시켜 보자.

     

    3. Run Flask Application

    host_addr = "0.0.0.0"
    port_num = "8080"
    if __name__ == "__main__":
        app.run(host_addr, port_num)
    

    host_addr이 "0.0.0.0"이면 loopback 역할을 한다. 즉, 이 웹 서버는 "127.0.0.1"이라는 ip address로 접근이 가능하며, 외부 ip에서는 접근이 불가능 하다.

    port_num은 TCP Port를 의미한다. 0~65535에서 현재 사용하는 포트(보통 0~1024는 OS에서 사용 중)를 제외한 포트를 설정하면 된다. (기본 http : 80, https : 443)

     

    이렇게 변수를 선언하고 app.run의 파라미터로 집어 넣고 파이썬을 실행하면, 웹 서버가 동작하게 된다.

    현재 코드 상으로는 "127.0.0.1:8080"로 웹사이트에 접근이 가능하다.

    이제 웹사이트 상에서 원하는 메세지를 출력 해보도록 하자.

     

    4. Show Hello page

    from flask import Flask, render_template

    우선 템플릿(html)을 보여주기 위한 render_template를 Import 한다.

    @app.route('/hello_flask')
    def hello_flask():
        return render_template('hello_flask.html')

    @app.route('/hello_flask') 어노테이션은 hello_flask로 접근 했을 때 hello_flask() 함수가 동작하도록 해준다.

    이후 render_template('hello_flask.html')을 반환하여 'hello_flask.html'의 내용을 사용자에게 출력해준다.

     

    이제 출력을 담당하는 hello_flask.html을 작성하자.

     

    5. Write hello_flask.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>hello Flask</title>
    </head>
    <body>
        <h1>Hello, flask world!!</h1>
    </body>
    </html>

    앞서 우리는 app 객체를 생성할 때 templates에 대한 부분을 건드리지 않았다.

    따라서, 웹 서버는 템플릿을 불러올 때, 플라스크 템플릿 기본 경로인 '/templates'로 접근할 것이다.

    그러므로, 최상위 폴더 내에 templates 폴더를 생성하고, 이 폴더 내에 'hello_flask.html'을 작성하자.

     

    작성이 완료되었으면 모든 개발이 끝났다. 이제 웹브라우저를 통해 접근해보자.

     

    6. Access to Website

    파이썬을 실행하고, "127.0.0.1:8080/hello_flask"를 웹 브라우저에 입력하면 다음과 같은 화면이 나올 것이다.

    앞서 설명한 것처럼 "host_addr:port_num/app_route" 형식으로 접근함을 알 수 있다.

     


    이로써, 우리는 플라스크에 첫 발을 내딛었다.

     

    다음 시간에는 플라스크를 통해 로그인(데이터베이스 없이)을 구현해 보자.

    댓글

Designed by Tistory.