요약
django.urls.path() 함수는 path(route, view, kwargs=None, name=None) 와 같이 4개의 파라미터를 받아들일 수 있는데, 처음 2개의 파라미터는 반드시 있어야 하고, 뒤의 2개는 옵션.
main - urls.py
--------------
from django.urls import path, include
urlpatterns = [
path('user/', include('user.urls')),
path('item/', include('item.urls')),
path('review/', include('review.urls')),
path('order/', include('order.urls')),
path('store/', include('store.urls')),
]
order app - urls.py
-------------------
from django.urls import path
from order import views
urlpatterns = [
path('cart', views.CartView.as_view(), name='order-cart'),
path('request', views.OrderView.as_view(), name='order-request')
]
item - urls.py
--------------
urlpatterns = [
path('teashop/list', views.ItemListView.as_view(), name='item-list'),
path('teashop/detail/<int:item_id>', views.ItemDetailView.as_view(), name='item-detail')
]
django.urls.path() 함수는 path(route, view, kwargs=None, name=None) 와 같이 4개의 파라미터를 받아들일 수 있는데, 처음 2개의 파라미터는 반드시 있어야 하고, 뒤의 2개는 옵션이다.
첫번째 파라미터 : URL route에서 사용된 경로를 지정한다.
path() 함수의 첫번째 파라미터인 URL 패턴은 완전한 경로를 표시한다.
'accout/login'으로 경로를 지정하면, 이는 '/accout/login/' 경로를 의미한다.
두번째 파라미터 : 해당 URL에 상응하는 View를 지정하는 것이다.
두번째 파라미터에서 View를 지정하는 방식으로는 함수 뷰(function view)의 이름을 지정하거나
클래스에 기반한 View (class based view)의 경우 "클래스명.as_view()"와 같이 지정한다.
이 때 생성된 객체에서 dispatch 메서드를 호출하여 GET, POST를 파악하고 매칭되어 연결된다.
세번째 파라미터 : Dictionary 형식의 아큐먼트를 옵션으로 지정할 수 있다.
네번째 파라미터 : path 이름을 지정한다.(path명으로부터 URL 패턴 정보를 찾는 URL Reversing 을 위해 흔히 사용된다)
함수의 경로 데이터에 대한 정보를 나중에 사용하기 위해 임의로 지정해두는것이다.
path() 함수의 좀 더 복잡한 표현으로 URL 파라미터로부터 특정 정보를 읽어내는 방법에 대해 알아보자. 예를 들어, 피드백 Id가 URL 상에 있다고 했을 때, 이 Id를 알아내기 위해 URL 패턴을 "feedback/" 혹은 Id가 숫자인 경우 명시적으로 "feedback/<int:id>", "teashop/detail/<int:item_id>"와 같이 지정할 수 있다. 여기서 "id","item_id" 는 views.py에 전달되는 파라미터명이다.
include() 함수는 다른 URLconf들을 참조할 수 있도록 해준다. Django가 함수 include()를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 처리를 위해 include 된 URLconf로 전달하게 된다.
클래스형 뷰 사용시 클래스로 진입하기 위해 제공되는 진입 메소드