Django URLs

뚝딱뚝딱·2023년 9월 17일
1

Django

목록 보기
3/13
post-thumbnail
post-custom-banner

Django URLs

URL dispatcher

  • URL 패턴을 정의하고 해당 패턴이 일치하는 요청을 처리할 view함수를 연결(매핑)
  • 운항관리자, 분배기

변수와 URL

  • 템플릿의 많은 부분이 중복되고, URL의 일부만 변경되는 상황이라면 계속해서 비슷한 URL과 템플릿을 작성해 나가야 할까?

Variable Routing

URL 일부에 변수를 포함 시키는 것(변수는 view 함수의 인자로 전달 할 수 있음)

  • 작성법
    - <path_converter:variable_name>

Path converters

URL 변수의 타입을 지정 (str, int, slug, uuid, path로 5가지 타입 지원)

Variable routing 실습


App과 URL

App URL mapping

각 앱에 URL을 정의하는 것 > 프로젝트와 각 앱이 URL을 나누어 관리를 편하게 하기 위함

2번째 앱 pages 생성 후 발생할 수 있는 문제

  • view 함수 이름이 같거나 같은 패턴의 url 주소를 사용하게 되는 경우
  • 아래 코드와 같이 해결할 수 있으나 더 좋은 방법이 필요
  • ⇒ URL을 각자 app에서 관리하자!!
from articles import views as articels_views
from pages import views as pages_views

urlpatterns = [
	...,
	path('pages', pages_views.index),
]

include()

프로젝트 내부 앱들의 URL을 참조할 수 있도록 매핑하는 함수
URL의 일치하는 부분까지 잘라내고,
남은 문자열 부분은 후속 처리를 위해 include된 URL로 전달

URL 이름 지정

  • url 구조 변경에 따른 문제점
    • 기존 ‘articles/’주소가 ‘articles/index/’로 변경됨에 따라 해당 주소를 사용하는 모든 위치를 찾아가 변경해야 함
    • URL에 이름을 지어주면 이름만 기억하면 되지 않을까?

Naming URL patterns

  • URL에 이름을 지정하는 것
    (path 함수의 name 인자를 정의해서 사용)

'url' tag

주어진 URL 패턴의 이름과 일치하는 절대 경로 주소를 반환

URL 이름 공간

  • articles 앱의 url 이름과 pages 앱의 url 이름이 같은 상황
  • 단순히 이름만으로는 완벽하게 분리할 수 없음
  • ⇒ 이름에 성(키, key)을 붙이자

'app-name' 속성 지정

  • app-name 변수 값 설정

참고

Trailing Slashes

  • Django는 URL 끝에 '/'가 없다면 자동으로 붙임(Django 의 url 설계철학)
  • '기술적인 측면에서, foo.com/bar와foo.com/bar/는 서로 다른 RUL
    - 검색 엔진 로봇이나 웹 트래픽 분석 도구에서는 이 두 주소를 서로 다른 페이지로 봄
  • 그래서 Django는 검색 엔진이 혼동하지 않게 하기 위해 붙이는 것을 선택
  • 그러나 모든 프레임워크가 이렇게 동작하는 것은 아니니 주의해야 함!
profile
나의 행복 만들기
post-custom-banner

0개의 댓글