[Django] re_path 정규 표현 주소

원준·2023년 10월 19일

Django

목록 보기
3/4

path()와 re_path()

  • 일번작인 URL 패턴 지정을 위해 path() 함수를 사용하되, path()에서 지정하지 못하는 복잡한 패턴의 경우 정규 표현식을 사용하는 re_path()함수를 사용한다!

기본 적인 사용법

re_path 기호

  • r : 이스케이프 기호
  • ^ : 정규식 시작 기호
  • $ : 정규식 종료 기호
re_path(r'^pages/$', APIView.as_view())

# 종료 기호 $ 가 없다면, 끝 부분에 아무 값이나 오더라도 허용이 된다는 뜻이다!
  • \d: 숫자를 의미한다. 그러므로 [0-9]와 동일한 의미이다.
  • \D: 숫자를 제외한 것을 의미한다. 따라서 [^0-9]와 동일한 의미이다.
  • \s: 공백문자(white space)를 의미한다.
  • \S: 공백문자를 제외한 것을 의미한다.
  • \b: 단어의 시작과 끝의 빈공백을 의미한다.
  • \B: 단어의 시작과 끝의 빈공백이 아닌 빈공백을 의미한다.
  • \w: 숫자와 알파벳 문자를 의미한다. 따라서 [a-zA-Z0-9]와 동일한 의미이다.
  • \W: 숫자와 알파벳 문자를 제외한 것을 의미한다.

대표적 정규 표현식 종류

PK - 정수

  • 정규식: (?P\d+)

    re_path(r'^questions/(?P<pk>\d+)/$', QuestionDV.as_view(), name='question_detail')

슬러그(slug) - 문자열

  • 정규식: (?P[-\w]+)
    re_path(r'^posts/(?P<slug>[-\w]+)/$', PostDV.as_view(), name='post_detail')

PK + 슬러그 조합

  • 정규식: (?P[-\w]+)-(?P\d+)
    re_path(r'^blog/(?P<slug>[-\w]+)-(?P<pk>\d+)/$', PostDV.as_view(), name='blog_post')

사용자 아이디(이메일 주소 포함)

  • 정규식: (?P[\w.@+-]+)
    re_path(r'^profile/(?P<username>[\w.@+-]+)/$', UserProfile.as_view())

연도별

  • 정규식: (?P[0-9]{4})
    re_path(r'^articles/(?P<year>[0-9]{4})/$', PostAPIVIew.as_view())

월별

  • 정규식: (?P[0-9]{4})/(?P[0-9]{2})
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})$')

일별

  • 정규식: (?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', PostDAV.as_view(),
          name='post_day_archive')
profile
공부해보자

0개의 댓글