장고로 프로젝트를 만든 뒤,
하위 프로젝트 폴더에 생성 된 urls.py
에 들어가면 이런 코드가 기본적으로 입력되어 있다.
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
이게 대체 뭔소리냐!! 잘 이해가 안되니까 하나씩 풀어서 이해해보자.
from django.contrib import admin
django
: 장고를 일컫는다.
contrib
: contribution의 약자.
즉 django.contrib
은 장고에 기여한 프레임 워크 모음집 정도로 이해하면 된다.
(참고 링크)
장고를 설치만 하면 꺼내 쓸 수 있기 때문에 따로 설치가 불필요하다.
django.contrib
코드를 눌러 들어가면 하위에 수 많은 기여한 패키지들이 있는데, admin
또한 그러하다.
이름 뜻 그대로 관리자 기능을 수행해주는 패키지인데, 장고가 만들어 둔 admin
페이지를 들어가기 위해선 import 할 필요가 있다.
기본적으로 설치할 때 코드가 써져있어서 따로 안써도 된다.
path('admin/', admin.site.urls),
이 path
를 통해서 불러온다.
아래에 추가적으로 이야기 할 것 이므로 path
는 뒤로 패스.
from django.urls import path
공식 문서에서는 django.urls
을 URLconfs를 사용하기위한 기능(function)이라고 정의하고 있다.
이 URLconf란, 클라이언트가 요청한 URL에 대해 어떤 뷰를 실행할지 결정하는 역할을 한다고 한다.(챗gpt왈...)
그니까 내 언어로 풀어서 말하자면, 저 django.urls
는 요청이 들어오면 어떤 뷰(파일)를 실행할 지 정하고 url로 이동시켜주는. 정도로 이해된다.
추가로 장고에는 총 2가지 URLconf가 있는데,
1) 프로젝트 전체의 url을 관할하는 urls.py
와
(프로젝트 명과 같은 폴더 하위에 있다. settings.py
가 위치한 그곳.)
2) 각 app의 urls.py
가 있다.
path
는 그 django.urls
라는 패키지 하위에 있는 함수 중 하나다.
path('admin/', admin.site.urls)
path('test/', views.test_view, name='test_view')
앞에서 말했듯이, path
는 함수이기 때문에 안에 값을 넣어서 불러와주면 된다.
'admin/'
이나 'test/'
가 들어가는 첫 번째 자리는 route
다. 즉, 이동경로를 말한다.
그 다음 두 번째 자리는 view
가 들어가는 자리다.
view
는 웹 요청(request)을 처리하고, 적절한 HTTP 응답(response)을 반환하는 python 함수나 클래스를 말한다. (라고 챗gpt가 말함..)
마지막 세 번째 자리는 이름이 들어가는데, 이건 html
과 연동시킬 때 불러오기 위해서 네이밍을 해주는 거라, 굳이 html
파일과 연동시킬 게 아니면 생략해줘도 괜찮다.
(버튼을 눌러 페이지 이동한다거나 같은 경우)
- 다른 모델을 참조할 때 사용.
- null 값을 가질 수 있음.
- 일대 다 관계 나타낼 수 있음
- null 값을 가질 수 없음.
- 일대 일 관계. (일대 다 불가능)