티스토리 뷰

* 이전 글에 이어서 webapp 프레임워크를 사용하는 방법을 살펴보자.


2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기전에 공부하기

2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기 - Hello world


* 개요

: CGI 표준은 간단하지만 이 모든것을 직접 손으로 코딩하려고 한다면 복잡하고 귀찮은 일이다. 웹 어플리케이션 프레임워크는 이러한 사항들을 대신 다워준다. Google App Engine은 Python과 CGI, WSGI 등을 이용하는 모든 프레임워크와 통신을 할 수 있다.따라서 Django, CherryPy, Pylons, web.py, web2py와 같은 프레임워크를 입맛에 따라 선택하고 구현을 하면 된다.


: App Engine은 자체적으로 간단한 웹 어플리케이션 프레임워크를 포함하고 있는데, 그것이 바로 webapp 프레임워크이다. webapp 프레임워크는 이미 App Engine에 설치되어있으며, SDK에도 포함되어있다. 따라서 따로 개발하는 어플리케이션과 묶어서 업로드하거나 할 필요가 없다.


*webapp 프레임워크 사용해서 Hello, webapp World! 출력하기

: helloworld.py를 다음과 같이 수정하자.




webapp 어플리케이션은 3가지 부분으로 나뉘어져 있다.

  • RequestHandler를 받아들여 Response를 생성하는 하나 또는 이상의  함수
  • 들어오는 request를 URL기반으로 매핑하는 WSGIApplication 인스턴스
  • CGI 아답터를 이용하고 위에서 선언한 WSGIApplication을 실행하는 main 함수


: 일단 로드해보자.

: 여기서 webapp 프레임워크가 하는 것을 살펴보면, request를 처리할 MainPage 함수를 선언하고, WSGIApplication에서 URL '/' 를 MainPage에 매핑하는 것을 볼 수 있다. request는 MainPage 안에서 self.request로 참조가 가능하고, response를 self.response에 써서 리턴하는 것이다. WSGIApplication에서 debug = True를 하면, 에러가 나는 경우 브라우저에 에러 스택을 출력하게 된다.


: run_wsgi_app() 함수는 WSGIApplication 인스턴스를 받아들이거나 다른 WSGI 호환 가능한 어플리케이션 객체를 받아들이며, App Engine의 CGI 환경에서 WSGI로 바꿔주는 역할을 하게 된다.


: webapp 프레임워크에 대해 자세한 내용은 아래 사이트에 나와있다.

https://developers.google.com/appengine/docs/python/tools/webapp/



* GAE에서 구글 계정 (Users Service) 사용하기

: 다시 helloworld.py에 있는 내용을 수정하자.



: 이 소스코드에서는 appengine.api의 users 모듈을 가져와서 users.get_current_user() 함수를 실행한다. 현재 로그인 되어있다면 user를 리턴할것이고 아니라면 null을 리턴할 것이다. 


: self.redirect(users.create_login_url(self.request.uri)) 는 로그인 되어있지 않을때 로그인 페이지로 redirect 시키고, 다시 돌아오는 페이지는 현재 요청된 페이지로 설정하는 것이다. 현재는 이 구문으로 인해 아래와 같은 페이지로 이동되는 것을 볼 수 있다.

: 개발용 서버일 경우 이렇게 단촐한 로그인 창이 뜨고, 실제 Google App Engine에 올리게 되면 구글 계정으로 로그인하는 페이지로 이동 된다.



* webapp 프레임워크로 form 데이터 다루기

: 이번에도 helloworld.py를 다음과 같이 수정해보자.



  • 맨위에 cgi 모듈을 import한다. 인자를 받을때 cgi.escape()함수로 decode하려고 하는 목적이다.
  • MainPage에서 페이지에 form을 추가하고, /sign의 url로 submit을 하게 된다.
  • Guestbook클래스는 /sign에 매핑될 함수로 request의 내용을 받아서 출력한다.
  • WSGIApplication 인트턴스에서 위의 Guestbook 클래스를 /sign에 매핑해주고 있다.


: 이 실행 결과는 다음과 같다. 일단 위에 입력한 form이 출력되고, submit을 누르면 그 결과가 출력된다.



: 이 소스를 보면 다양하게 응용이 가능하다는 것을 느꼈을 것이다. 그럼 다음에는 App Engine의 Datastore를 활용하는 방법을 알아보자.



GAE와 Python으로 webapp 프레임워크 사용하기 끝.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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 31
글 보관함