파이썬

urlconf 코딩해보기

mcdn 2020. 9. 20. 15:39
반응형

from django.contrib import admin
from django.urls import path
from polls import views # 추가

urlpatterns = [
    path('admin/', admin.site.urls),
    path('polls/', views.index, name='index'), #여기부터 추가
    path('polls/<int:question_id>/', views.detail, name='detail'), 
    path('polls/<int:question_id>/results/', views.results, name='results'), 
    path('polls/<int:question_id>/vote/', views.vote, name='vote'),
]

 주의사항

1. from polls import views 이전의 from django~는 django에서 기본으로 만들어준 애들 views는 우리가 다음에 코딩해줄 예정이다.

2. path('admin'밑에 path들은 직접 우리가 썼다. 장고의 admin사이트에 대한 urlconf는 이미 정의되어 있어 이를 활용하고 있다.

3. url/뷰 매핑을 정의하는 방식은 항상 동일하므로 따라서 코딩한다. url 퍁ㄴ 매칭은 위에서 아래로 진행하므로 정의하는 순서에 유의해야 한다. 

 

 

path함수는 route, view, (kwargs) (name) 인 2개의 필수인자와 2개의 선택 인자로 구성되어 있다. 

route는 url패턴을 표현하는 문자열 

view는 url스트링이 매칭되면 호출하는 뷰함수 HTtpRequest 객체와 url스트링에서 추출된 항목이 뷰함수의 인자로 전달된다. 

kwargs는 url스트링에서 추출된 항목 외에 추가적인 인자를 뷰함수에 전달될떄 

name는 url패턴별로 붙여준 이름이다. 템플릿 파일에서 많이 사용됨. 

 

각라인의 의미

만약 요청 url이 /admin/이라면 admin앱의 url 매핑 처리에 일임한다. 

만약 요청 url이 /polls/이라면 추출되는 항목이 없으므로 views.index(request)라는 뷰함수가 호출된다. 

만약 요청 url이 /polls/3이라면 추출되는 항목은 3이므로 views.detail(request, question_id=3)라는 인자가 대입된다. 

만약 요청 url이 /polls/7/results라면 추출되는 항목은 7로 views.results(request, question_id=7)가 대입된다. 

만약 요청 url이 /polls/9/vote/라면 추출되는 항목은 9므로 views.vote(request, question_id=9)가 된다. 

 

이 모든 건 mysite/settings.py 파일의 ROOT_URLCONF에 mysite.urls로 정의되어 있기 떄문에 이 urls.py를 가장 먼저 분석하는 것이다. 

 

두개의 파일에 저장하려면 다르게 코딩할 수 있다. 

반응형