Today I Learned/django

장고 앱 url 분리작성하기

하나719 2023. 6. 28. 15:52
반응형

하나의 프로젝트에 여러 앱을 개발하는 경우 앱 마다 url.py 를 따로 만들어서 관리해주는것이 좋다.

이렇게 앱별로 작성하면 수정 및 확장이 용이하기 때문입니다.

 

프로젝트 구조 

프로젝트: mysite

- 앱1. blog

- 앱2. bookmark

 

1) 프로젝트 urls.py 에 작성

blog 와 bookmark의 url이 모두 한 파일에서 작성되어 있습니다. 

 

mysite.urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    
    path('blog/', views.post_list, name = 'post_list'),
    path('blog/post/<int:pk>/', views.post_detail, name='post_detail'),
    path('blog/post/new/',views.post_new, name = 'post_new'),
    path('blog/post/<int:pk>/edit/',views.post_edit, name ='post_edit'),
    
    path('bookmark/', BookmarkLV.as_view(), name='index'),
    path('bookmark/<int:pk>/', BookmarkDV.as_view(), name='detail'),

]

2) 앱 별로 urls.py 생성해서 작성 

mysite.urls.py

앱 별로 url 시작 패턴을 정해주고 include함수로 각 앱별 urls 파일을 넣어줍니다.

blog앱은 blog/xxxxx/ 이런 형식의 url 패턴으로 연결해줄 수 있고,

bookmark앱은 bookmark/xxxx/ 형식으로 연결해줄수 있습니다. 

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',include('blog.urls')),
    path('bookmark/',include('bookmark.urls')),

]

blog.urls.py

blog/ 뒤에 올 패턴을 정해줍니다.

-> blog를 앞에 한번 더 작성해줄 필요 없습니다. (mysite.ulrs.py 에 이미 써있음)

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name = 'post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
    path('post/new/',views.post_new, name = 'post_new'),
    path('post/<int:pk>/edit/',views.post_edit, name ='post_edit')
]

bookmark.urls.py

bookmark/ 뒤에 올 패턴을 정해줍니다.

-> bookmark를 앞에 한번 더 작성해줄 필요 없습니다. (mysite.ulrs.py 에 이미 써있음)

from django.urls import path
from .views import BookmarkLV, BookmarkDV

urlpatterns = [
    path('',BookmarkLV.as_view(), name ='index'),
    path('<int:pk>/',BookmarkDV.as_view(), name = 'detail'),
]

 

파일 구조

각 앱 파일 아래 urls.py 파일을 생성해주고 코드를 작성해줍니다. 

 

 

반응형