플라스크로 나만의 웹 페이지 만들기-02
Intro
이 포스트는 플라스크로 나만의 웹 페이지 만들기 - 01 에 의존합니다. 이전 포스트를 먼저 보시는걸 추천합니다.
근데, 다들 파이썬은 아시죠?
플라스크는 라우팅, 디버깅, 서버 게이트웨이 인터페이스(WSGI) 서브시템은 Werkzeug(벡자이크) 에 의존하고 템플릿 지원은 Jinja2(신사2)에 의존한다. (둘다 플라스크 코어 개발자가 만들었다.) 나는 처음 플라스크를 배울때 이 WSGI
라는게 무엇인지 감이 안와서 한참을 헤맸던 기억이 있다. 간단히 말하면 플라스크를 아파치나 엔진엑스같은 웹서버에 올리기위한 일종의 약속인 셈이다. WSGI
파일 작성법은 나중에 작성하겠다.
“Hello world!”
역시 첫 예제는 “Hello world!”지!! 다음과 같은 파일을 작성하고 hello.py
로 저장한다.
1
2
3
4
5
6
7
8
9
10
11
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Hello world!</h1>'
if __name__ == '__main__':
app.run(debug=True)
자, 이제 $ python hello.py
로 실행시켜보자!
다음과같은 결과가 나왔다면 성공이다! 이제 아무 브라우저에 들어가서 주소창에localhost:5000
를 입력해보자.
네! 놀랍게도 이게 전부입니다.
와우! 단 몇줄로 웹 애플리케이션을 만들었다! 모르는 코드들이 보이지만, 일단 넘어간다. 곧 알게 될테니까!
플라스크를 사용하려면 import
해야하는건 당연!
플라스크 애플리케이션은 다음과같이 인스턴스를 생성해야한다.
app = Flask(__name__)
웹 서버는 클라이언트로부터 수신한 모든 리퀘스트(request)를 이 오브젝트에서 처리한다.
웹 브라우저와 같은 당신이 만든 앱을 이용하는 클라이언트는 당신의 서버에 리퀘스트를 전송한다. 당신에게 페이지를 요청 하는 것이다.
이 요청을 플라스크에서는 URL을 파이썬 함수에 매핑하는데 그일을 처리하는것을 라우트(route)라고 한다. @app.route('/')
즉, 이 코드의 '/'
는 최상위 디렉토리를 가리킴을 알 수 있다.
다음은 뷰 함수(View function)이다.
클라이언트가 요청
한 페이지를 플라스크가 라우트
하여 실행하게되는 함수를 뷰 함수라고 한다. 우리가 보게된 Hello world!
가 이 뷰함수에의해 보인 것 이다.
마지막에 app.run(debug=True)
에서 debug=True
속성은 웹 앱이 실행중에 오류가 있을때 브라우저에서 오퍼레이션 모드를 설정할 수 있게 해준다. 개발과정에서 디버그 모드를 사용할 수 있기 때문에 실재 웹 서버에 올릴때는 꼭 삭제해 줘야한다.
동적 페이지 만들기.
아래와 같은 코드를 작성하고 user.py
로 저장한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Hello world!</h1>'
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
if __name__ == '__main__':
app.run(debug=True)
코드에 꺽쇠 괄호가 추가되었다.
$ python user.py
로 실행한뒤, 브라우저에 라우팅 규칙대로 localhost:5000/user/flask
를 입력해 보면
사용자가 URL마지막에 입력하는 단어를 변수로 가져와 출력하는 동적페이지 이다.