djangoMaster>urls.py에서 모든 경로를 관리하고 있다. 앱의 개수와 경로의 개수가 많아지면 코드의 양이 방대해지고 유지 보수가 어렵다.
include를 사용하여 더 깨끗하게 만들어보자
현재 디렉토리 구조는
DJANGOMASTER
├─ djangoMaster
│ ├─ templates
│ │ main.html
│ ├─ urls.py
│ └─ views.py
├─ home
│ ├─ templates
│ │ └─ home
│ │ hello.html
│ ├─ views.py
# djangoMaster>urls.py
from django.urls import path, include
urlpatterns = [
...
path('시작경로', include('앱.urls')),
]
ex.
urlpatterns = [
...
path('home/', include('home.urls')),
]
시작경로는 앞에 항상 붙는 경로. 보통 앱 이름과 같게한다.
앞으로 home/라고 시작하는 경로는 home라는 앱의 urls.py에서 관리한다는 의미이다.
주소 이름과 같은 함수 정의한다.
# home>views.py
from django.shortcuts import render
def hello(request):
return render(request, 'home/hello.html')
# home>urls.py
from django.urls import path
from .views import * # home>views에서 모든 함수를 가져온다.
urlpatterns = [
path('go_hello', hello), # home>views.py의 hello함수를 의미한다.
]
경로를 /hello라고 하면 서버가 실행되지 않는다. 시작경로가 home/이기 떄문에 home/hello라고 해야한다.
http://127.0.0.1:8000/home/go_hello 로 서버를 접속해보면
잘 실행된다.
같은 이름 다른 뜻
path("경로", 함수)
경로 : 주소창 ~/main
함수 : views에 있는 함수