url을 연결할 때 urlpatterns에 path들을 단순 나열해두면 path가 많아졌을 때 관리가 어렵다.
# myproject/urls.py
from django.contrib import admin
from django.urls import path
# import 해주기
import myapp.views
urlpatterns = [
# <http://127.0.0.1:8000/admin/> 일 때
path('admin/', admin.site.urls),
# <http://127.0.0.1:8000/> 일 때 myapp.views.home함수를 실행해라
path('', myapp.views.home, name='hello_world'),
]
그래서 django.urls의 include를 사용해 url들을 계층적으로 관리한다.
먼저 url을 관리할 앱을 myproject/setting.py의 INSTALLED_APPS에 등록한다.
# myproject/setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp.apps.MyappConfig',
'appone',
'apptwo',
]
각 앱에 추가로 urls.py 생성한다. ( appone/urls.py, apptwo/urls.py )
원래의 myproject/urls.py에 와서 외부 url을 등록한다.
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
import myapp.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', myapp.views.first, name='first'),
path('second/', myapp.views.second, name='second'),
# appones/어쩌구저쩌구 모든 url들은 appone 폴더의 urls.py 파일에서 담당
path('appones/', include('appone.urls')),
]
path('appones/', include('appone.urls')),코드를 통해
http://127.0.0.1:8000/appones/1
http://127.0.0.1:8000/appones/2
http://127.0.0.1:8000/appones/ab
등등 appones/로 시작하는 모든 url을 appone.urls에서 관리하게 된다.
다음으로 appone/urls.py에 url을 동록한다.
from django.urls import path, include
from appone import views
urlpatterns = [
# 아무것도 입력되지 않았을 때 실행될 함수니까
# 현재 url은 <http://127.0.0.1:8000/appones/> 이다.
path('', views.appone),
# <http://127.0.0.1:8000/appones/first/>
path('first/', views.apponefirst),
]
정리
하나의 프로젝트에 app이 여러 개 존재한다면, 각각의 앱 안에 urls.py 파일을 만들고 프로젝트의 urls.py에서 app의 urls.py를 연결해 URL관리를 위탁할 수 있다.
'[장고]' 카테고리의 다른 글
[Django] Template 상속 (0) | 2022.06.30 |
---|---|
[Django] Static 파일 관리하기 (0) | 2022.06.30 |
[Django] 장고 처음 시작하기 (0) | 2022.06.30 |