[파이썬 배우기] 7.웹개발

Posted on Updated on

웹 개발이라!!!


왜 웹 개발을 해야 하는 것인가? 에 대한 답변은 자명하다. 나는 웹에 프로그램을 올려놓고, 사람들은 인터넷 브라우저를 통해서 프로그램을 실행하면 되는 것이다. 지금까지 웹은 웹이라고 생각했는데, 왜 웹앱 웹앱 하는지 알 것 같다. 웹으로 그냥 앱을 짜면 되는 것이다. 앱!

안드로이드를 개발하는 이유는 웹앱에서 처리할 수 없는, 하드웨어에 의존적인 기능들을 수행할 수 있고, 성능도 웹보다 좋기 때문으로 보인다. 하지만 그런 것이 아니라면, 간단한 기능을 수행하는 것이라면, 특히! 정보를 교환하는 것이라면, 그야말로 웹앱은 최고의 수단이 되는 것 같다. 아직 잘은 모르겠지만

yate.py


어렵다 yate.py 라는 파일을 받아서 실험을 해 보라고 한다.
믿어야 하는 것인지는 모르겠으나 일단 진행해 보도록 한다.

오늘 보니까, 동적으로 폼 데이터를 생성해 주는 간단한 스크립트다. python 파일을 실행시켜서html 양식에 맞는 일련의 스트링을 뽑아주는 역할을 수행한다. 그냥 간편하게 웹페이지를 보여주기 좋다. 간단하다

웹앱 동작의 일련의 과정


1. 사용자의 요청

일반적으로 사용자가 인터넷 브라우저를 통해서 무언가를 요청한다. 그림이나 웹페이지를 달라고 한다거나, 이런 저런 입력을 건네주거나 할 것이다. 웹 요청으로 바꿔서, 서버로 전송한다.

2. 웹서버로 웹 요청 도착

웹 서버로 웹 요청이 도착하면, 웹 서버는 무엇을 할 지 판단을 해야한다. 그림, 텍스트, 문서 등등 정적인 물건들을 건내 주기만 한다면  웹 응답을 통해서 웹 브라우저로 보내주기만 하면 된다. 하지만 좀 더 복잡한 계산을 시킨다거나, 동적으로 행동한다면 그에 맞는 요청을 처리해야 한다

3. 웹 요청 처리하고 돌려 보내기

동적인 요청을 처리해야 한다면, 즉, 프로그램을 동작시켜야 한다면, 미리 만들어 놓은 프로그램을 실행하기 위해서 표준화 되어있는 CGI(Common Gateway Interface) 스크립트를 통해 수행한다.

4. 사용자의 브라우저에서 응답을 표시하기

할 일은 다 끝났다. 호호호

그냥 말로만 하면 참 쉬운데 그렇게 쉽지는 않다. 벌써 리눅스 보드의 파이썬 스크립트는 뻗었다. 왠지 몰라도 윈도우즈에서 파이썬 스크립트를 실행하면 웹서버가 잘 돌아가는데, 리눅스 보드에서는 잘 안된다. 경로에 파이썬 파일이 있는데도 불구하고 경로를 찾지 못한다고 한다.

 MWC (Model -View-Controller)


http://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC

wiki 참조

웹앱도 그렇고 안드로이드도 그런 것 같다. MWC 모델을 사용해서 개발하면, 각각의 역할을 나누어서 할 수 있다. 논리가 문제라면  contorller 를 봐야 하는 것 같다. View 는 html 을 말하는 것이겠지?  Model 은 뭔지 잘 모르겠다. 아직 감이 안잡히는데, 다시 이 글을 탈고할 때 쯤은 알 수 있겠지

헤드퍼스트 파이썬 257 페이지를 참고하자면,

모델 : 웹앱의 데이터를 저장하거나 처리하는 코드
뷰 : 웹앱의 UI를 만들고 출력하는 코드
컨트롤러 : 웹앱의 뷰와 모델을 연결, 앱의 노리 처리를 담당

데이터를 모델링하자

put_to_store() : 웹앱이 시작할 때: 기존에 있던 데이터를 불러 와서 피클링한다.
get_from_store() : 웹앱이 실행하고 있는 동안: 피클링된 데이터를 뽑아서 딕셔더리로 가지고 온다.

두 경우 모두, 리턴 값은 딕셔너리다.

책은 여기까지를 데이터를 모델링 하는 것으로 설명한다. 지금은 간단한 어플리케이션이기 때문에 딕셔너리를 쓰지만 나중에 되면 DB를 사용하는 것으로 보인다. 일단 패스

UI – 뷰 담당

웹앱의 UI (User Interface)는 html 파일로 이뤄진다. html 파일을 양식대로 만들기만 하면, 브라우저는 그 것을 해석하여 알맞는 화면을 출력해 준다. 이 html 을 python 을 이용해서 만들어 본다.

yate 라는 아주 간단한 파이선 스크립트를 이용하여, 간단한 웹페이지 뷰를 만들 것이다. (헤드퍼스트 출판사에서 제공한다)

Template 를 import 했으며 각 함수의 시그너처는 다음과 같다.

start_response(resp="text/html")
include_header(the_title)
include_footer(the_links)
start_form(the_url, form_type="POST")
end_form(submit_msg="Submit")
radio_button(rb_name, rb_value)
u_list(items)
header(header_text, header_level=2)
para(para_text)

뭘 말하는 것인지는 대충 알 것 같다. 이 것을 그냥 사용하면 html 이 string 으로 뿅 나올 것이고, 그 것을 그냥 브라우저에 보내주기만 하면 될 듯 하다.


일단 여기까지.

cgi 표준

헤더에 포함해야 할 것 : 포함된 데이터 형

start_response()함수가 제어함

7장 정리 :
MVC 모델 뷰 컨트롤러 패턴에 따라 웹앱을 설계하고 구현하면 유지보수가 좋다.
모델 : 데이터 저장
뷰 : ui
컨트롤러 : 논리
표준 라이브러리의 string 모듈은 Template클래스를 포함한다. 문자열 치환을 쉽게 해준다
표준 라이브러리의 http.server모듈은 웹서버를 구현한다.
표준 라이브러리의 cgi모듈은 CGI스크립트 작성을 지원한다
표준 라이브러리의glob모듈은 폴터에 있는 파일 이름을 나열하기 좋다
chmod 로 실행가능 권한을 해 줘야 실행된다(유닉스계열)
표준 라이브러리의 cgitb 모듈은 CGI추적 기능을 켜서, 코드 에러를 브라우저에서 확인 가능
cgitb.enable()을 사용함
cgi.FieldStorage()를 이용해서 웹서버에 보내는 웹 요청 데이터에 접근할 수 있다. 데이터는 딕셔너리형으로 가져옴.
이 것을 잘 모르겠음……..

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중