-
[Django] URL 관리하기Python & Django 2021. 6. 2. 13:37
이번에는 URL 을 프로젝트와 앱 단위로 따로 관리하는 방법을 공부해보겠습니다.
1. URL 관리
이전에 만들었던 tistory 프로젝트의 urls.py 에 가보면, blog 앱의 CRUD 를 만들면서 작성한 path 들이 죽 나열되어 있습니다. 그런데 만약 앱이 여러개가 생성되고 프로젝트가 복잡해지면 앱의 url 들을 따로 관리하는 것이 효율적일 것입니다.
2. 앱의 urls.py 만들기
우선, 앱의 urls.py 를 새로 만들고 코드를 작성해야 합니다. 저는 이전에 blog 앱을 만들었기 때문에 여기에서 진행해보겠습니다.
코드는 프로젝트 디렉토리의 urls.py 의 코드를 복붙해오면 되는데 이때 코드를 약간 수정합니다.
from django.contrib import admin from django.urls import path from .views import * urlpatterns = [ path('<str:id>', detail, name="detail"), path('new/', new, name="new"), path('create/', create, name="create"), path('edit/<str:id>', edit, name="edit"), path('update/<str:id>', update, name="update"), path('delete/<str:id>', delete, name="delete"), ]
제가 수정한 부분은 3번째 줄의 from blog.views import * 을 from .views import * 로 변경했는데요, blog/urls.py 가 blog/views.py 와 같은 디렉토리 안에 있기 때문에 접근할 수 있어서 blog 를 빼줍니다.
그리고 path 들 중 앱 단위에서 admin 과 home 을 사용할 필요가 없어서 삭제했습니다. 나머지 detail, new, create, edit, update, delete 는 앱에서 사용하기 때문에 남겨두어야 합니다.
3. 프로젝트의 urls.py 수정하기
이제 프로젝트 디렉토리에 있는 urls.py 를 수정합니다.
from django.contrib import admin from django.urls import path, include from blog.views import * urlpatterns = [ path('admin/', admin.site.urls), path('', home, name="home"), path('blog/', include('blog.urls')) ]
blog/urls.py 와 중복되는 path 들을 모두 삭제해주고, 8번째 줄에 path('blog/', include('blog.urls')) 를 추가했습니다. 이 코드는 blog/ 라는 경로에 blog.urls 연결하겠다는 의미입니다. 이렇게 해주면 blog/urls.py 에 있는 path 들을 모두 불러올 수 있습니다.
이때 include 함수를 사용하려면 2번째 줄에 include 함수를 import 해주어야 합니다.
서버를 열어보면,
예를 들어, 우리가 3번째 게시물을 수정하는 사이트에 접속했을 때 기존에 127.0.0.1:8000/edit/3 이었던 주소가 127.0.0.1:8000/blog/edit/3 로 변경되는 것을 확인할 수 있습니다.
'Python & Django' 카테고리의 다른 글
[django] 페이지네이션 구현하기(장고 Paginator) (0) 2021.08.04 [django] 블로그 카테고리 게시판 만들기(카테고리 별 게시물 리스트, 카테고리 리스트 한 화면에 구현하기) (0) 2021.08.04 [Django] Template 상속 (0) 2021.06.02 [Django] CRUD 로 블로그 구현하기 (DELETE) (0) 2021.06.01 [Django] CRUD로 블로그 구현하기 (Update) (0) 2021.06.01