2010년 6월 7일 월요일

04. Request 처리

사용자의 응답을 django는 어떻게 처리하는지 알아봅시다.(본 내용은 http://www.djangobook.com/en/2.0/chapter03/ 의 How django Processes a Request를 참고하여 작성하였습니다.)

 

먼저 사용자가 http://127.0.01/hello/ 로 요청을 하였다고 가정하겠습니다.

 

django는 이 요청을 받으면 먼저 작성한 프로젝트(참고 : django 시작하기)에서 settings.py를 찾아 사용자의 요청에 따른 URL과 view의 연결을 담당하는 ROOT_URLCONF의 값을 읽어옵니다.

ROOT_URLCONF의 기본값은 '프로젝트 명.urls'로 django도 Python의 모듈처리와 동일하게 작동하니 프로젝트디렉토리/urls.py가 됩니다.

만 일 urls.py를 다른 이름으로 바꿔 사용하시려면 ROOT_URLCONF의 값을 바꿔 사용하면 됩니다.

기본값으로 계속 진행한다고 하면 django는 urls.py를 읽어서 사용자의 요청 Pattern(굳이 Pattern이라고 한것은 url을 Pattern으로 처리하여 view와 연동하기 때문입니다.)과 동일한 Pattern이 있으면 해당 Pattern에 대응시킨 view function을 실행시킵니다.

view는 함수이기 때문에 적당한 return이 존재하는데 이 때 return은 HttpResponse 객체가 됩니다.

django는 view function의 return 값인 HttpResponse 객체를 사용자에게 응답하기 위해 적절한 HTTP 형태로 만들어 사용자에게 보여줍니다.

이상을 도식화하여 보면 다음과 같습니다.

 

django-request.jpg

 

 

예제를 위한 스크립트는 다음과 같습니다.

 

urls.py

  1. from django.conf.urls.defaults import *
    from 애플리케이션.views import *
    urlpatterns = patterns('',
        (r'^$', main_page),
        (r'^hello/$', hello),
    )

굵게 표시한 부분은 사용자의 요청으로 들어오는 /hello/ pattern에 대해 view의 함수 hello를 적용하라는 의미입니다.

 

애플리케이션/views.py

  1. from django.http import HttpResponse
    def hello(request) :
        output = '''
    <html>
    <head><title>%s</title></head>
    <body>
    <h1>%s</h1>
    <p>%s</p>
    </body>
    </html>
        ''' % ('django', 'Hello', 'My django Page')
        return HttpResponse(output)

urls.py에 의해 사용자의 요청과 매핑된 hello함수 입니다.

반환 객체로 사용할 HttpRespose를 위해 import한 것을 살펴보시고 함수 마지막의 return도 살펴보시기 바랍니다.

 

아래는 위의 수행의 결과로 사용자가 보게 되는 응답화면입니다.

 

screenshot01.jpg   

 

이 글은 스프링노트에서 작성되었습니다.

댓글 없음:

댓글 쓰기