Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mysql
- TIL
- 스프링
- flask
- mybatis
- 에러
- 자바
- rdbms
- database
- spring
- Oracle
- 데이터베이스
- 파이썬
- 플라스크
- db
- 알고리즘
- 자바스크립트
- java
- Git
- 링크
- 웹프로그래밍
- BOJ
- sql
- 이클립스
- jQuery
- PYTHON
- eclipse
- javascript
- 오라클
- 백준
Archives
- Today
- Total
기록과 정리의 공간
[Flask] Flask 시작 하기 본문
(참고 링크)의 일부를 정리함
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>
'라이브러리&프레임워크 > Flask' 카테고리의 다른 글
[Flask] Flask로 REST API 구현하기 / CORS란? (0) | 2020.09.06 |
---|---|
[Flask] 메시지 플래싱(Message Flashing) (0) | 2020.08.07 |
[Flask] 리다이렉트(Redirect) (0) | 2020.08.01 |
Comments