기록과 정리의 공간

[Flask] Flask 시작 하기 본문

라이브러리&프레임워크/Flask

[Flask] Flask 시작 하기

딸기맛도나쓰 2020. 7. 29. 20:25

(참고 링크)의 일부를 정리함

Flask의 기본 어플리케이션

Flask기본 어플리케이션은 다음과 같은 모습이다.

  • 작성한 어플리케이션의 이름을 'flask.py'로 하지 않도록 주의한다. Flask와 자체 충돌이 나기 때문.
  • #1 : Flask class를 import함
  • #2 : Flask class의 인스턴스를 생성. 인자로 모듈이나 패키지의 이름을 넣는다.
    ★인자로 모듈의 이름을 직접 넣지 않고, __name__으로 지정한 이유? : __name__은 현재 모듈(.py 파일)의 이름으로 정해지는데 해당 모듈이 시작점일 경우, __main__으로 변경되므로 이 부분을 해결하기 위해 __name__으로 지정
  • #3 : route() 데코레이터로 어떤 URL이 함수를 실행시키는지 알려준다.
  • #4 : 함수는 사용자 브라우저에 보여줄 메시지를 리턴한다.
  • #5 : 최종적으로는 run()함수를 통해 개발한 어플리케이션을 로컬 서버로 실행함
  • #6 : .py을 모듈이 아닌 python 인터프리터에서 직접 실행한다면 해당 코드는 우리가 실행한 서버가 현재 동작하는 유일한 서버라는 것을 보장한다.
from flask import Flask #1

app = Flask(__name__) #2 


@app.route("/") #3
def test(): #4
    return "Hello World!"


if __name__ == "__main__":  #6
    app.run(debug=True) #5

서버를 중지하려면 Ctrl + C를 누른다.

외부에서 접근 가능한 서버

위 코드로 서버를 실행하면, 내 로컬 서버에서만 접근이 가능하다.

아래와 같이 run()함수에 host='0.0.0.0을 주어 메소드 호출을 변경하면 서버의 접근을 오픈할 수 있다.

app.run(host='0.0.0.0')

디버그 모드

디버그 모드를 활성화하지 않으면, 개발 시 코드 변경 후에 수동으로 서버를 재시작해야 서버에 변경 사항이 적용된다.
따라서, 디버그 모드를 아래와 같이 활성화 시켜주면 서버는 코드 변경을 감지하여 자동으로 리로드하고, 디버거를 제공한다.

app.run(debug=True)
  • 주의! : 보안 취약점이 될 수 있으므로, 운영 환경에서는 절대 사용하지 말아야한다!

템플릿 보여주기

  • Flask는 jinja(jinja2 공식 문서)를 템플릿 엔진으로 구성하여 자동으로 HTML을 이스케이핑 한다.
  • 템플릿을 뿌려주기 위해, render_template()(사용법)을 사용할 수 있다.
  • Flask는 templates폴더에서 템플릿을 찾는다. 모듈로 어플리케이션을 개발했다면, 해당 폴더는 그 모듈 옆에 위치하고, 패키지로 개발했다면, 그 패키지 안에 위치한다.
from flask import Flask, render_template

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run()
# hello.html

<html>
    <h1>hello!</h1>
</html>

Comments