-
[Python web framework: Bottle] 2. Hello WorldPython/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)
플라스크와 거의 같죠? 플라스크가 보틀의 영향을 받았기 때문입니다.
이름부터 바를(보틀)~ => 플래스크(플라스크)~ 둘 다 병이죠?
반응형