플라스크로 나만의 웹 페이지 만들기-02

Intro


이 포스트는 플라스크로 나만의 웹 페이지 만들기 - 01 에 의존합니다. 이전 포스트를 먼저 보시는걸 추천합니다.


근데, 다들 파이썬은 아시죠?


플라스크는 라우팅, 디버깅, 서버 게이트웨이 인터페이스(WSGI) 서브시템은 Werkzeug(벡자이크) 에 의존하고 템플릿 지원은 Jinja2(신사2)에 의존한다. (둘다 플라스크 코어 개발자가 만들었다.) 나는 처음 플라스크를 배울때 이 WSGI 라는게 무엇인지 감이 안와서 한참을 헤맸던 기억이 있다. 간단히 말하면 플라스크를 아파치나 엔진엑스같은 웹서버에 올리기위한 일종의 약속인 셈이다. WSGI파일 작성법은 나중에 작성하겠다.


“Hello world!”


역시 첫 예제는 “Hello world!”지!! 다음과 같은 파일을 작성하고 hello.py로 저장한다.

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로 실행시켜보자!

Cap 2017-10-13 14-06-19-784.png


다음과같은 결과가 나왔다면 성공이다! 이제 아무 브라우저에 들어가서 주소창에localhost:5000를 입력해보자.

Cap 2017-10-13 14-15-56-498.png


네! 놀랍게도 이게 전부입니다.


와우! 단 몇줄로 웹 애플리케이션을 만들었다! 모르는 코드들이 보이지만, 일단 넘어간다. 곧 알게 될테니까!

플라스크를 사용하려면 import해야하는건 당연!
플라스크 애플리케이션은 다음과같이 인스턴스를 생성해야한다.
app = Flask(__name__)
웹 서버는 클라이언트로부터 수신한 모든 리퀘스트(request)를 이 오브젝트에서 처리한다.

웹 브라우저와 같은 당신이 만든 앱을 이용하는 클라이언트는 당신의 서버에 리퀘스트를 전송한다. 당신에게 페이지를 요청 하는 것이다.
이 요청을 플라스크에서는 URL을 파이썬 함수에 매핑하는데 그일을 처리하는것을 라우트(route)라고 한다. @app.route('/')
즉, 이 코드의 '/' 는 최상위 디렉토리를 가리킴을 알 수 있다.

다음은 뷰 함수(View function)이다.
클라이언트가 요청한 페이지를 플라스크가 라우트하여 실행하게되는 함수를 뷰 함수라고 한다. 우리가 보게된 Hello world!가 이 뷰함수에의해 보인 것 이다.

마지막에 app.run(debug=True)에서 debug=True속성은 웹 앱이 실행중에 오류가 있을때 브라우저에서 오퍼레이션 모드를 설정할 수 있게 해준다. 개발과정에서 디버그 모드를 사용할 수 있기 때문에 실재 웹 서버에 올릴때는 꼭 삭제해 줘야한다.


동적 페이지 만들기.


아래와 같은 코드를 작성하고 user.py로 저장한다.

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를 입력해 보면

Cap 2017-10-13 14-47-15-859.png


사용자가 URL마지막에 입력하는 단어를 변수로 가져와 출력하는 동적페이지 이다.


다음포스트 - 플라스크로 나만의 웹 페이지 만들기 - 03