Python/Django

[Django] VIew와 URL conf

C마노 2017. 3. 7. 18:48

python manage.py runserver 를 했을때, 스크립트는 프로젝트 내부 디렉토리의 settings.py 파일을 찾는다.


이 파일은 장고 프로젝트를 위한 모든 설정을 포함하고 있습니다.


모든것은 대문자이고 TEMPLATE_DIRSDATABASES, etc. 


가장 중요한것은 ROOT_URLCONF 입니다.


이 옵션이 Django 에서 URL 의 ROOT로 지정되어야 한다고 알려준다.


ROOT_URLCONF = 'mysite.urls'
이것을 잘 보면 실제 경로는 mysite/urls.py 이라는 것을 알 수 있다.


특정 URL에 대한 요청이 들어올때 Django는 ROOT_URLCONF 를 보고 urls.py를 로드합니다.


그리고 matching 되는 url을 찾습니다.


매칭되는 하나를 찾으면, 그 패턴과 관련된 뷰 함수를 호출하여 첫번째 매개 변수로 HttpRequest 객체를 전달합니다.


그리고 View 함수는 무조건 HttpResponse를 반환해야 합니다.


우선 이 작업이 끝나고 나면 Django가 나머지 작업을 수행합니다. 


적절한 HTTP 헤더와 Body ( 즉 웹페이지의 내용 )을 사용하여 Python 객체를 적절한 Web Response로 변환합니다.


요약하면 아래와 같습니다.


1. 사용자가 /hello/ 의 요청을 보냅니다.


2. Django는 ROOT_RULCONF 를 보고 루트 URLconf 를 결정합니다.


3. Django는 /hello/ 와 일치하는 URLconf 의 모든 URL 패턴을 찾습니다.


4. 만약 일치하는 것을 찾으면 관련 뷰 함수를 호출합니다.


5. 해당 View 함수는 HttpResponse를 반환합니다.


6. Django는 HttpResponse를 적절한 HTTP 응답으로 변환하여 웹페이지를 생성합니다.


이것은 장고로 구동되는 페이지를 만드는 기본입니다.