- 클라이언트로부터 요청을 받으면 장고는 가장 먼저 요청에 들어있는 URL을 분석함
- 즉, 요청에 들어있는 URL이 urls.py 파일에 정의된 URL패턴과 매칭되는지를 분석함
- URL/뷰 매핑 (URLconf)
from django.urls import path
from . import view
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/',view.year_archive),
]
- articles/2003/ 부분 : URL
- views.special_case_2003 부분 : 처리 함수(뷰)
- 웹 클라이언트가 웹 서버에 페이지 요청 시, 장고에서 URL을 분석하는 순서를 간단히 요약하면 다음과 같음
- setting.py파일의 ROOT_URLCONF 항목을 읽어 최상위 URLconf(urls.py)의 위치를 알아냄
- URLconf를 로딩하여 urlpatterns 변수에 지정되어 있는 URL 리스트를 검사
- 위에서부터 순서대로 URL 리스트의 내용을 검사하면서 URL 패턴이 매치되면 검사를 종료함
- 매치된 URL의 뷰를 호출함(뷰 : 함수 또는 클래스의 메소드)
- 호출 시 HttpRequest 객체와 그리고, 매칭할 때 추출된 단어들을 뷰에 인자로 넘겨줌
- URL 리스트 끝까지 검사했는데도 매칭에 실패하면 에러를 처리하면 뷰를 호출
- <int:year> : URL 패턴의 일부 문자열을 추출하기 위한 것으로 <type:name> 형식으로 사용으로
- ex) URL이 /articles/2018/처럼 <> 부분이 정수이면 매치되고 /articles/post/처럼 정수가 아니면 매치되지 않음
- 매치된 경우, 매치된 문자열 2018을 인자명 year에 할당함
- 즉, 요청 URLdl /articles/2018이면 뷰 함수를 views.year_archive(request, yaer=2018)처럼 호출
- 꺽쇠 부분을 장고에서는 Path Converter라고 부르는데, 여기에 사용되는 타입은 다음과 같음
- str : /(슬래시)를 제외한 모든 문자열과 매치(디폴트 : str)
- int : 0 또는 양의 정수와 매치 (int타입)
- slug : slug 형식의 문자열(ASCII, 숫자, 하이픈, 밑줄로만 구성됨)과 매치
- uuid : UUID 형식의 문자열과 매치됨. 매치된 문자열은 파이썬의 UUID 타입으로 변환됨
- path : /(슬래시)를 포함한 모든 문자열과 매치됨. 이는 URL 패터의 일부가 아니라 전체를 추출하고 할 때 사용
- URL 표현식에 정규표현식을 사용하면 URL을 좀 더 세밀하게 표현하거나, 복잡한 URL도 표현 가능함
'Python-Django' 카테고리의 다른 글
Django 개발 : Template - 화면 UI 정의 (0) | 2019.08.01 |
---|---|
Django 개발 : View - 로직 정의 (0) | 2019.08.01 |
Django 개발 : Model - 데이터베이스 정의 (0) | 2019.07.30 |
CHAPTER2 - 실전프로그램 개발(Bookmark 앱) (0) | 2019.07.29 |
CH1 : 장고개발의 기본 사항 (0) | 2019.07.29 |