Flask 테스트하기
설치한 Flask를 테스트하기 위해서, 사용하는 에디터에서 Hello.py 파일을 생성하고 다음 코드를 입력합니다. Hello.py는 처음 생성한 디렉토리의 루트 경로에 만들어야 합니다. 예를 들어, 저는 newproj/Hello.py를 생성하였습니다.
from flask import Flask
app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World' if __name__ == '__main__': app.run() |
반드시 프로젝트에 Flask를 모듈을 import해야 합니다. Flask 클래스의 객체는 WSGI 애플리케이션 애플리케이션입니다.
Flask 생성자는 current module(__name__)을 인자로 받습니다.
Flask 클래스의 route() 함수는 데코레이터(decorator)입니다. 이 데코레이터는 애플리케이션에 어떤 URL가 호출해야 하는 연관된 함수를 요청합니다.
app.route(rule, options)
- rule: 이 함수와 연결된 URL를 나타냅니다.
- options: rule 객체에 전달될 인자 목록입니다.
위 예시 코드의 ‘/’는 URL은 hello_world() 함수와 연결되어 있습니다.그러므로 브라우저에서 웹 서버의 홈 페이지가 열리면, 이 함수의 반환값이 화면에 그려질 것입니다.
마지막으로 Flask 클래스의 run() 메소드는 로컬 개발 서버에 애플리케이션을 실행합니다.
app.run(host, port, debug, options)
모든 인자는 선택적입니다.
- host: 응답을 받는 hostname. 127.0.0.1(localhost)가 기본값. 외부에 사용가능한 서버는 ‘0.0.0.0’을 설정합니다.
- port: 기본값은 5000
- debug: 기본값은 false. 만약 true로 설정하면, debug 정보를 제공합니다.
- options: Werkzeug 서버에 전달할 내용
이제 Hello.py를 실행합니다.
참고로 정상적으로 실행하기 위해서 준비되어야 하는 사항
- virtualenv가 설치되어야 합니다.
- virtualenv가 활성화되어야 합니다.
- Flask가 설치되어야 합니다.
- Hello.py가 디렉토리 루트에 위치해야 합니다.
위 사항은 이전 포스팅에 설명되어 있으므로 참고하시길 바랍니다.
Hello.py가 정상적으로 실행되면 다음과 같은 정보를 확인할 수 있을 것입니다.
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
이제 127.0.0.1:5000(localhost)에서 웹 애플리케이션 서버가 동작합니다. 웹 브라우저의 주소창에 이 주소(hostname)를 입력하면 Hello.py 코드가 실행되어 응답을 줄 것입니다. 바로 ‘Hello World’를 브라우저에서 확인할 수 있습니다.
Debug Mode
Flask 애플리케이션은 run() 메소드가 호출하여 실행됩니다. 하지만 애플리케이션을 개발 중이라면 코드가 수정될 때마다 수동으로 재시작해주어야 합니다. 이런 불편함을 피하기 위해서 debug mode를 활성화해야 합니다. 서버는 코드가 수정되면 스스로 재시작됩니다. 그리고 debug mode는 애플리케이션에서 발생할 수 있는 에러를 편리하게 추적할 수 있습니다.
debug mode는 애플리케이션의 debug를 True도 설정하여 활성화할 수 있습니다.
app.debug = True
app.run()
혹은
app.run(debug = True)
실제로 Hello.py가 실행 중에 코드를 수정하면 다음을 확인할 수 있습니다.
* Detected change in '/mnt/d/Projects/newproj/Hello.py', reloading
* Restarting with stat
* Debugger is active!
* Debugger PIN: 334-372-594
코드가 수정되면 위와 같이 애플리케이션 즉시 재시작됩니다.
다음에 다룰 내용은 무엇인가요?
Flask의 라우팅에 대해서 살펴볼 예정입니다. Flask를 사용하여 만든 웹 애플리케이션의 URL과 함수를 연결하는 방법을 다룰 예정입니다.
댓글 없음:
댓글 쓰기