url(Uniform Resource Locator)는 네트워크 상의 자원의 위치를 나타내는 문자열이다.
url은 domain과 path부분으로 나눌 수 있는데
domain은 요청을 할 서버를 의미한다.
장고 프로젝트에 웹 브라우저로부터 요청이 들어오면
url의 path부분이 어떤지에 관계없이 제일 먼저
(1) 루트 디렉토리 안에 있는 urls.py 파일을 살펴본다.
그 이유는 settings.py의 ROOT_URLCONF(장고가 URL을 보고 가장 먼저 어떤 파일을 봐야할지 설정하는 부분)에
루트 디렉토리의 urls.py 파일이 지정되어 있기 때문이다.
설정대로 urls.py에 가서
(2-1) 입력된 url의 경로와 맞는 패턴이 있는지 확인을 한다.
domain/foods/index 라고 가정했을 때
#costaurant/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('foods/', include('foods.urls')),
]
foods 부분을 보고,
path 뒤 인자의 동작을 하게 되는데 지금은 foods 앱 안에 있는 urls.py를 보라고 알려주는 것이다.
(include('foods.urls') -> foods가 매칭되어 있으면 그 뒷부분부터는 foods 안에 있는 urls.py를 보라는 뜻)
(2-2) 연결된 곳으로 가서 url을 체크한다.
#foods/urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('index/', views.index),
]
index로 들어오면 views.index를 가리키고 있다.
이렇게 작성하면 views 파일의 index 함수가 호출된다.
(3) views 파일의 함수 호출
#foods/views.py
from django.http.response import Http404, HttpResponse
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("<h2>Hello, Django</h2>")
index 함수는 인수로 요청을 받고 응답을 리턴해준다.
아래와 같이 개발 서버를 키고
python manage.py runserver
해당 url로 접속을 하면 아래의 화면이 뜨는 것을 확인할 수 있다.
<URL 처리 순서 정리>
1. 처음 요청이 들어오면 django는 맨 처음 사용할 URLConf 모듈을 찾아요. 따로 변경하지 않는다면 프로젝트 앱 내 settings.py의 ROOT_URLCONF 설정을 사용합니다.
2. ROOT_URLCONF로 정의된 URLConf 모듈을 보고 urlpatterns 리스트 안쪽의 django.urls.path() 함수를 순서대로 실행합니다.
3. 요청과 일치하는 URL 패턴이 있다면 django.urls.path() 함수에 따라 view를 호출하거나, 일치하는 URL 패턴 다음의 URL을 하위 URLconf 모듈로 넘깁니다.
'Django' 카테고리의 다른 글
Django Template Language (0) | 2021.08.15 |
---|---|
Django MVT 구조 (0) | 2021.08.13 |
Django 템플릿과 렌더링 (0) | 2021.08.12 |
Django 앱(app) (0) | 2021.08.10 |
Django 프로젝트 구조 알아보기 (0) | 2021.08.10 |
댓글