바뀜
→config/urls.py 수정
<youtube>https://www.youtube.com/watch?v=sCdpY-gYDLE</youtube>
==개요==
==개요==
주소를 통해 웹사이트에 들어오게 된다. 이렇게 들어온 주소를 분석하여 특정한 페이지로 연결시켜주어야 한다. 이 연결의 첫번째 관문이 바로 <code>\프로젝트\config\urls.py</code> 이다.
주소를 통해 웹사이트에 들어오게 된다. 이렇게 들어온 주소를 분석하여 특정한 페이지로 연결시켜주어야 한다. 이 연결의 첫번째 관문이 바로 <code>\프로젝트\config\urls.py</code> 이다.
setting.py의 ROOT_URLCONF 항목을 읽어 urls.py를 불러오고, urlpatterns변수에 지정된 패턴을 찾아 대응시킨다.
setting.py의 ROOT_URLCONF 항목을 읽어 urls.py의 경로나 이름을 바꿀 수 있다.
===역할===
===역할===
매핑할 때 추출한 단어들을 뷰에 인자로 넘겨준다.
* 특수한 주소를 받으면, 그 주소에 해당하는 함수를 불러온다.(여기에 해당하는 view를 불러온다.)
* 매핑할 때 추출한 단어들을 뷰에 인자로 넘겨준다. 주소창 안의 <code>~주소/<타입:변수명></code> 형태의 주소를 분석하여 뷰에 인자(타입:변수명)를 전달한다.
* 매칭되는 뷰가 없다면 에러를 처리하는 뷰를 호출한다.
=연결=
path()함수와 re_path()함수 따위를 통해 URL과 함수(view)를 연결시킨다.
<syntaxhighlight lang="python">
from django.urls import path
from . import 불러올파이썬파일 # 현재경로에서 불러온다는 의미.
urlpatterns = [
path('주소/', 뷰), # 해당 주소로 들어가면 뷰를 실행한다.(뷰는 위에서 import해와야 한다.) 뷰 함수를 불러올 때 ()는 생략한다.
path('', a) # http://도메인 으로 접속하면 a함수와 연결된다.
path()함수와 re_path()함수 따위를 통해 URL과 함수를 연결시킨다.
path('test/', test) # http://도메인/test/ 로 접속하면 test 함수와 연결된다.
past(.....)
....
]
</syntaxhighlight>
===path()===
===path()===
route, view 2개의 필수인자와 kwargs, name 2개의 선택인자를 받는다.
route, view 2개의 필수인자와 kwargs, name 2개의 선택인자를 받는다.
|-
|-
|name
|name
|각 URL 패턴별로 이름을 붙여준다.(이름공간의 역할을 한다.)
|각 URL 패턴별로 이름을 붙여준다.(인덱스의 역할을 한다.)
|자세한 건 tip에서.
|자세한 건 tip에서.
|}
|}
===최소요소===
===최소요소===
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
from dfango.urls import path
from django.urls import path
from . import 불러올파이썬파일 #현재경로에서 불러온다는 의미.
from . import 불러올파이썬파일 # 현재경로에서 불러온다는 의미.
urlpatterns = [
urlpatterns = [
path('주소/', 함수),
path('주소/', 뷰),
past(.....)
past(.....)
....
....
하나의 urls.py에 모든 주소를 관리하게 하는 건 양이 많아져 정리하기도 힘들다. 때문에 앱마다 URL을 알아서 관리하게끔 교통정리를 해주는 편이 좋다. 이 편이 정리하기에도, 확장하기에도 좋다.
하나의 urls.py에 모든 주소를 관리하게 하는 건 양이 많아져 정리하기도 힘들다. 때문에 앱마다 URL을 알아서 관리하게끔 교통정리를 해주는 편이 좋다. 이 편이 정리하기에도, 확장하기에도 좋다.
===config/urls.py 수정===
===config/urls.py 수정===
앱으로 넘겨줄 url을 <code>path('앱이름/', include('앱이름.urls')),</code> 형태로 고치면 앱이름 주소와 매칭되는 모든 URL을 앱이름.urls로 넘긴다. [http://xn--hq1bm8jm9l/%EC%95%B1%EC%9D%B4%EB%A6%84/ http://도메인/앱이름/] 으로 시작되는 모든 주소를 앱의 urls.py로 넘겨준다는 의미이다.(#이후경로 매핑을 위해 주소 뒤에 /를 붙여준다.)
앱으로 넘겨줄 url을 <code>path('앱이름/', include('앱이름.urls')),</code> 형태로 고치면 앱이름 주소와 매칭되는 모든 URL을 앱이름.urls로 넘긴다. [http://xn--hq1bm8jm9l/%EC%95%B1%EC%9D%B4%EB%A6%84/ http://도메인/앱이름/] 으로 시작되는 모든 주소를 앱의 urls.py로 넘겨준다는 의미이다.(#이후경로 매핑을 위해 주소 뒤에 /를 붙여준다.)<syntaxhighlight lang="python">
from django.urls import path, include
urlpatterns = [
path('주소/', include('앱이름.urls')),
past(.....)
....
]
</syntaxhighlight>
===앱/urls.py 작성===
===앱/urls.py 작성===
/앱이름/urls.py 파일을 생성해두어야 한다. 다음과 같은 요소들이 최소요소. 여기서 작성된 url은 이전 주소 뒤에 붙는다.<syntaxhighlight lang="python">
/앱이름/urls.py 파일을 생성해두어야 한다. 다음과 같은 요소들이 최소요소. 여기서 작성된 url은 이전 주소 뒤에 붙는다.<syntaxhighlight lang="python3">
from dfango.urls import path, include #include를 더 import 하자.
from django.urls import path
from .views import * #해당 앱의 뷰를 불러온다.
from .views import * #해당 앱의 뷰를 불러온다.
urlpatterns = [
urlpatterns = [
path('주소/', 불러올파이썬파일.불러올함수, name='인덱스명'),
path('주소/', 불러올파이썬파일.불러올함수, name='인덱스명'),
path(.....)
....
....
]
]