ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python web framework: Bottle] 2. Hello World
    Python/Bottle 2019. 8. 30. 22:33
    반응형
    from bottle import route, run  # 1
    
    @route('/hello')  # 2
    def hello():
        return "Hello World!"
    
    run(host='localhost', port=8080, debug=True)  # 3

     

    # 1. 틀을 임포트 합니다.. 

     

    # 2. route()라는 데코레이터가 URL 경로 '/hello'와 다음 줄의 hello 함수를 연결해줍니다.. 

     

    * 데코레이터 - 파이썬에서 @로 시작하는 일종의 클로저 함수. 데코레이터와 클로저는 중급(?) 정도의 파이썬 지식이 필요합니다. 데코레이터나 클로저 같은 문법을 잘 몰라도 웹 애플리케이션을 작성할 수 있도록 도와주는 것이 웹 '프레임워크'죠. 일단은 넘어가도록 합시다.

     

    * 프레임워크와 라이브러리의 차이도 생각해 보면 좋겠습니다. 저는 '주도권을 누가 가지고 있는가?'에 차이점이 있다고 생각합니다. 프로그래머가 주도권을 가지고 코드들의 도움을 받는 다면 그 코드들은 라이브러리입니다. 예를 들자면 정렬 라이브러리 같은 거죠. 반면에 프레임워크는 프레임워크가 주도권을 가지고 있습니다. 전체적인 틀이 완성되어 있고, 프로그래머는 빠진 코드들을 채워주기만 하면 프로그램이 완성됩니다. 어차피 프레임워크도 잘 활용하려면 구석구석 코드까지 잘 파악하고 있어야 합니다만, 일단 부족한 코드들을 채워 넣을 줄만 알면 되니까 초보도 복잡하고 덩치 큰 프로그램을 만들 수 있습니다. 바틀은 아주 작은 프레임워크라 분석하기 좋은 장점이 있습니다. ^^

     

    # 3. run()은 내장 개발용 서버입니다. IP주소는 localhost. 포트는 8080. 디버그 모드를 켜면 에러 발생 시 좀 더 자세한 내용을 웹 브라우저로 확인할 수 있습니다. 

     

    * localhost 대신 127.0.0.1을 사용하셔도 됩니다. 같은 의미입니다. 

     

    이게 답니다. 

     

    http://localhost:8080/hello 주소로 접속해 봅니다. 

     

     

    1. 클래스 기반으로 작성한다면 다음과 같습니다. 

    * 소스를 변경하면 서버를 재시작해주어야 합니다. 파이참에서는 CTRL+F5

     

    # 1. Bottle 클래스를 임포트 합니다. 이렇게 하면 route를 직접 임포트 하지 않아도 됩니다. 

    * 파이썬에는 클래스명은 대문자로 시작하는 관례가 있습니다.

    # 2. Bottle 클래스로 app 인스턴스를 생성합니다. 

    # 3. app 인스턴스를 통해 route 데코레이터를 불러올 수 있습니다. 

    from bottle import Bottle, run  # 1
    
    app = Bottle()  # 2
    
    @app.route('/hello')  # 3
    def hello():
        return "Hello World!"
    
    run(app, host='localhost', port=8080)

     

    플라스크와 거의 같죠? 플라스크가 보틀의 영향을 받았기 때문입니다. 

    이름부터 바를(보틀)~  => 플래스크(플라스크)~ 둘 다 병이죠?

    반응형
Designed by Tistory.