본문 바로가기

Django

Django 애플리케이션 별 urls 분리하기

728x90

urls 분리

애플리케이션 별로 urls를 별도로 설정해주기 위해서는 프로젝트 폴더 urls.py에서 분리 작업 필요

# ProjectName/urls.py

from django.url import path, include

urlpatterns = [
	path('admin/', admin.site.urls),
	path('AppName/', include('AppNames/urls')),
]

  • import 목록에 include 추가
  • urlpattens에 path('앱 이름/', include('앱이름.urls')) 추가
  • 앱 이름은 자유롭게 설정 할 수 있으며, 앱 이름 뒤 '/' 추가 주의
  • 앱이름을 포함하는 요청이 오면, 이동할 경로 지정하는 작업

애플리케이션 urls 생성

애플리케이션 폴더 내부에 urls.py 생성

$ cd AppName
$ touch urls.py
  • AppName 애플리케이션 폴더 내부로 이동
  • 이동 후 내부에 urls.py 파일 생성
  • 이 urls.py는 애플리케이션 이름으로 오는 url 요청을 관리하는 역할을 하게됨

애플리케이션 urls 작성

# AppName/urls.py

from django.urls import path
from . import views

app_name = 'AppName'

urlpatterns = [
    # URL mapping -> include
    path('index/', views.index, name='index'),
    path('create/', views.create, name='create'),
    path('<name>/profile/', views.profile, name='profile'),
]

  • 전체적인 틀은 프로젝트 urls.py와 유사
  • app_name에 애플리케이션 이름 작성 필수
    • 제대로 작성하지 않으면 서버 실행 오류
  • urlpatters 리스트 내부에는 AppName 이후 요청받을 url 작성
    • 단순 문자열 외에도 pk 등 활용 가능
  • 해당 url이 들어올 시 views 모듈 뒤에 작성된 이름의 함수 실행
  • name="name" 부분은 해당 과정을 부를 이름 작성
    • 다른 작업에서 이 url로 이동을 원할 시, 지칭 가능