Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

MyPrograming

URLconf 2계층 분류 본문

Python/Python Study

URLconf 2계층 분류

SeongWon 2020. 1. 30. 02:59
반응형

<why?>

 

초기의 간단한 프로젝트의 경우는 하나의 파일에 URL들을 정의하는 것이 관리하기 편리하다.

하지만 프로젝트의 규모가 커질 수록 하나의 프로젝트 안에 포함되는 앱의 수가 증가하여 URL 패턴도 

많아지기 때문에 2개의 계층으로 분류하는 것이 좋다.

 

  • 프로젝트 URL : 프로젝트 전체 정의 -> Django 앱의 urls.py
  • 앱 URL : 프로젝트에 생성된 앱마다 urls.py를 새로 만들어서 정의

1. 프로젝트 urls.py 변경

 

기존 프로젝트 urls.py

from django.contrib import admin
from django.urls import path, re_path
from dkea.views import *

urlpatterns = [
    re_path(r'^admin/', admin.site.urls),

    re_path(r'^$', DkeaMain, name='main'),
    re_path(r'^list/(?P<list>c\d+)/$', DkeaListView, name='list'),
    re_path(r'^detail/(?P<detail>\d+)/$', DkeaDetailView, name='detail')
]

분류하기 위해 새로 작성한 urls.py

from django.contrib import admin
from django.urls import path, re_path
from django.urls.conf import include

urlpatterns = [
    re_path(r'^admin/', admin.site.urls),

    re_path(r'^', include('dkea.urls')),
]

※ include()

다른 URLconf들을 참조할 수 있도록 해주는 함수. Django가 include()를 만나게 되면, 현재 매핑된 URL pattern과 일치하는 부분까지만 잘라내고, 남은 문자열 부분은 include 된 URLconf로 전달하여 처리한다.

 


2. 앱 urls.py 생성 / 정의

 

상위에 App파일이 위치하도록 새로운 Python File을 "urls.py"로 생성한다.

 

새롭게 생성된 urls.py를 작성한다.

from django.urls import re_path
from .views import *

app_name = 'dkea'

urlpatterns = [
    re_path(r'^$', DkeaMain, name='main'),
    re_path(r'^list/(?P<list>c\d+)/$', DkeaListView, name='list'),
    re_path(r'^detail/(?P<detail>\d+)/$', DkeaDetailView, name='detail')
]

app_name을 추가하여 Django 앱의 네임스페이스를 설정할 수 있다. 

한 프로젝트 내에 이름이 같은 url패턴들이 존재할 때, 각각 어떤 앱의 url 패턴인지 구분이 가능해진다.

 

반응형

'Python > Python Study' 카테고리의 다른 글

Docstring & 어노테이션  (0) 2020.07.27
Static File & Media File  (0) 2020.04.08
User 모델 확장  (0) 2020.04.05
해시와 솔트  (0) 2020.02.26
Pycharm views.py 복습  (0) 2020.02.17