반응형
하나의 프로젝트에 여러 앱을 개발하는 경우 앱 마다 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 파일을 생성해주고 코드를 작성해줍니다.
반응형
'Today I Learned > django' 카테고리의 다른 글
장고 (django) pagination 구현하기 (0) | 2023.07.19 |
---|---|
장고(django) QuerySets와 매니저로 작업하기 (0) | 2023.07.18 |
장고 generic display view 로 간단하게 bookmark앱 구현하기 (0) | 2023.06.28 |
(django) 장고 -MVT모델 (코드 예시 포함) (0) | 2023.06.22 |
01. 아주 간단한 장고(django) 설치하고 서버 실행 (0) | 2023.06.12 |