django | 3. APP>URL 분리하기

sojung·2021년 5월 26일
0

django

목록 보기
4/21
post-thumbnail

djangoMaster>urls.py에서 모든 경로를 관리하고 있다. 앱의 개수와 경로의 개수가 많아지면 코드의 양이 방대해지고 유지 보수가 어렵다.
include를 사용하여 더 깨끗하게 만들어보자

현재 디렉토리 구조는

DJANGOMASTER
├─ djangoMaster
│  ├─ templates
│  │    main.html
│  ├─ urls.py
│  └─ views.py
├─ home
│  ├─ templates
│  │  └─ home
│  │         hello.html
│  ├─ views.py

include 삽입

# 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')

앱의 urls.py 만들어준다

# 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에 있는 함수

profile
걸음마코더

0개의 댓글