dev/django

[django] url 분리

Jayce_kim 2022. 2. 14. 10:15

[django] 프레임워크란?

[django] 프로젝트 생성, 개발 서버 구동하고 접속하기

[django] Hello world

 


이 전 글에서 우리는 hello world 를 출력하기 위해 다음과 같은 과정을 거쳤다

  1. 폴더 생성
  2. 1의 폴더에 프로젝트 폴더 생성
  3. 1의 폴더에 앱 폴더 생성
  4. 프로젝트 폴더의 urls.py에서 url 매핑
  5. 매핑된 url에 표시될 화면을 앱 폴더의 views.py 에서 만듦

위 과정에서 우리가 눈여겨 봐야하는 점은 app과 관련된 작업은 앱 디렉토리 내부에 있어야 하는데

그렇지 않고 프로젝트 폴더 내의 urls 파일에서 작업을 했다는 것이다

 

그럼 우리는 생성된 앱과 관련된 url 매핑을 추가할 때마다 urls.py를 수정해야 하는데

말했다시피 urls.py는 프로젝트 폴더 하위에 있는 파일이니

프로젝트 성격의 URL 매핑만 추가되어야 한다

 

그래서 우리는 url 분리를 통해 이 괴리를 해결할 것이다

 

일단 config/urls.py 를 수정해보겠다

from django.contrib import admin
from django.urls import path, include # include 추가
#from app_1 import views --> 더 이상 필요 하지 않으므로 삭제

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app_1/', include('app_1.urls')), # app.1의 urls.py를 포함하도록
]

이제 app_1으로 시작하는 페이지를 요청하면 config/urls.py에서는

app_1/urls.py의 매핑정보를 읽어서 처리하게 된다

그럼 앱 폴더에도 url 매핑을 처리할 파일을 하나 생성해주고 다음과 같이 입력하자

from django.urls import path
from . import views # .은 현재 디렉토리 말한다

urlpatterns = [
    path('', views.index), # config.py/urls에서 이미 app_1/로 시작하는 url이 매핑되어 빈칸으로 둠
]

서버를 열고 http://127.0.0.1:8000/app_1/ 를 요청하면 이전 글과 똑같이 Hello world가 출력된다