본문 바로가기
Web/Django

URL

by Salgoo26 2021. 9. 5.

Django URLs

  • 발송자를 의미하는 Dispatcher 로서의 URL
  • 웹 어플리케이션은 URL을 통한 클라이언트의 요청으로부터 시작된다!!

Variable Routing

  • URL 주소를 변수로 사용하는 것
  • URL의 일부를 변수로 지정하여 view 함수의 인자로 넘길 수 있음
  • 즉, 변수 값에 따라 하나의 path() 에 여러 페이지를 연결 시킬 수 있음
  • 사용 예시
path('<int:movie_pk>/', views.detail, name='detail')

=> movie_pk 값에 따라 서로 다른 영화의 상세 페이지를 보여준다!!

URL Path converters

  • str
    • / 를 제외하고 비어 있지 않은 모든 문자열과 매치
    • 작성하지 않을 경우 기본 값
  • int
    • 0 또는 양의 정수와 매치
  • slug
    • ASCII 문자 또는 숫자, 하이픈 및 밑줄 문자로 구성된 모든 슬러그 문자열과 매치

App URL mapping

  • 하나의 app에서 사용하는 view 함수가 많아지면서 path() 의 사용 또한 많아지고, 하나의 프로젝트에서 여러 app을 사용하는 경우가 많이 때문에 프로젝트의 urls.py 에서 모두 관리하는 것은 프로젝트 유지보수에 좋지 않음
  • 따라서, 각 app에 url.py 를 작성하여 관리하게 된다.

 

프로젝트 urls.py 의 urlpattern 는 다른 어플리케이션의 urls 를 포함할 수 있다! movies/ 와 같은 요청은 그 이하의 내용과는 관계 없이, 모두 movies 어플리케이션의 urls.py 로 보내겠다는 의미이다.

include 메서드를 활용한다.

 

이처럼, 각 어플리케이션의 urls.py 에 세부 내용을 작성해준다.

 

Naming URL patterns

  • 링크에 url을 직접 작성하는 것이 아니라, path() 함수의 name 인자를 정의하여 각각의 url 에 이름을 붙여준다.
  • django template tag 중 하나인 url 태기를 사용해서 path 함수에 작성한 name 을 사용 가능
  • 각 url 경로들의 의존성을 제거할 수 있다. 템플릿에 URL을 하드코딩할 필요가 없어짐

 

 

 

URLs 주의사항

  • 클라이언트가 특정 url 을 요청하면, django 는 urlpatterns 에 들어있는 path를 위에서 부터 탐색하게 된다.
  • 따라서, path 작성 순서를 유의할 필요가 있다. 다음의 예시를 보자
urlpatterns = [
    # CREATE
    path('new/', views.new, name='new'),
    path(<str:movie_title>/, views.detail, name='detail')
    path('create/', views.create, name='create'),

 

 

위와 같이 urlpatterns 를 구성했다고 할 때 문제가 될 수 있다. 일반적인 영화 이름을 넣어 movies/movie_title1/ 과 같이 요청했다면 상관 없지만, movies/create/ 와 같이 요청했다면?! 위의 path에서 계속 걸리기 때문에, 결국 아래의 create view 함수와 연결된 path 에는 영원히 닿지 못할 것이다.

 

'Web > Django' 카테고리의 다른 글

ORM  (0) 2021.09.05
Model  (0) 2021.09.05
Namespace  (0) 2021.09.05
HTML form & Django  (0) 2021.09.05
Django 시작  (0) 2021.09.05

댓글