ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 로 변경되는 것을 확인할 수 있습니다.

    urls 관리 전 url
    blog/urls.py 생성 후 url


     

     

Designed by Tistory.