바뀜

625 바이트 추가됨 ,  2021년 5월 11일 (화) 18:32
13번째 줄: 13번째 줄:  
주소창 안의 <code>~주소/<타입:변수명></code> 형태의 주소를 분석하여 뷰에 인자(타입:변수명)를 전달한다.
 
주소창 안의 <code>~주소/<타입:변수명></code> 형태의 주소를 분석하여 뷰에 인자(타입:변수명)를 전달한다.
   −
===사용 가능한 타입===
  −
{| class="wikitable"
  −
!type
  −
!설명
  −
|-
  −
|str
  −
|/를 제외한 모든 문자열과 매칭됨.(디폴트타입)
  −
|-
  −
|int
  −
|음의 정수를 제외한 0과 양의 정수. 파이썬의 int타입으로 반환되어 view에 전달한다.
  −
|-
  −
|slug
  −
|slug형식의 문자열.(아스키문자나 숫자, 하이픈, _를 포함한 슬러그 문자열과 매칭)
  −
|-
  −
|uuid
  −
|UUID형식의 문자열.
  −
|-
  −
|path
  −
|기본적으로 str과 동일. /를 포함한 모든 문자열과 매치. URL패턴의 전부를 추출할 때 사용.
  −
|}ex) path('origin_image/<int:image_id>/', views.show_origin_image, name='origin_image'),
  −
*setting.py의 ROOT_URLCONF 항목을 읽어 urls.py를 불러오고, urlpatterns변수에 지정된 패턴을 찾아 대응시킨다.
   
==어떻게?==
 
==어떻게?==
 
path()함수와 re_path()함수 따위를 통해 URL과 함수를 연결시킨다.
 
path()함수와 re_path()함수 따위를 통해 URL과 함수를 연결시킨다.
43번째 줄: 22번째 줄:  
<code>path('주소/', 명령(일반적으로 함수를 불러온다), name="인덱스"),</code> 형태로 쓰인다.
 
<code>path('주소/', 명령(일반적으로 함수를 불러온다), name="인덱스"),</code> 형태로 쓰인다.
 
{| class="wikitable"
 
{| class="wikitable"
|+
   
!인자
 
!인자
 
!설명
 
!설명
77번째 줄: 55번째 줄:  
</syntaxhighlight>
 
</syntaxhighlight>
 
===정규표현식의 사용===
 
===정규표현식의 사용===
정규표현식을 사용해서 URL패턴을 작성할 수도 있다. <int:year> 대신 (?P<year>[0-9]{4}) 정규표현식에 익숙하지 않다면 힘들다;;
+
정규표현식을 사용해서 URL패턴을 작성할 수도 있다. (?P<year>[0-9]{4}) 형태로. 정규표현식에 익숙하지 않다면 힘들다;;
    
(정규표현식을 쓸 때엔 path()대신 re_path()함수를 사용한다.)
 
(정규표현식을 쓸 때엔 path()대신 re_path()함수를 사용한다.)
 +
 +
= 변수 전달하기 =
 +
주소창에 정규표현식을 그대로 사용하긴 어려우니 다음과 같이 타입을 지정하여 내용을 view로 전달할 수 있다.
 +
 +
<변수타입:변수명> 형태로 path 함수에 넣으면 view에 그대로 전달해준다.
 +
 +
===사용 가능한 타입===
 +
{| class="wikitable"
 +
!type
 +
!설명
 +
|-
 +
|str
 +
|/를 제외한 모든 문자열과 매칭됨.(디폴트타입)
 +
|-
 +
|int
 +
|음의 정수를 제외한 0과 양의 정수. 파이썬의 int타입으로 반환되어 view에 전달한다.
 +
|-
 +
|slug
 +
|slug형식의 문자열.(아스키문자나 숫자, 하이픈, _를 포함한 슬러그 문자열과 매칭)
 +
|-
 +
|uuid
 +
|UUID형식의 문자열.
 +
|-
 +
|path
 +
|기본적으로 str과 동일. /를 포함한 모든 문자열과 매치. /를 포함하여 주소지정을 할 때 사용.
 +
|}ex) path('origin_image/<int:image_id>/', views.show_origin_image, name='origin_image'),
 +
*setting.py의 ROOT_URLCONF 항목을 읽어 urls.py를 불러오고, urlpatterns변수에 지정된 패턴을 찾아 대응시킨다.
 +
 +
=== 전달예시 ===
 +
{| class="wikitable"
 +
!type
 +
!설명
 +
|-
 +
|str
 +
|path('str/<str:content>/', views.hello_content),
 +
|-
 +
|int
 +
|path('int/<int:content>/', views.hello_content),
 +
|-
 +
|slug
 +
|path('slug/<slug:content>/', views.hello_content),
 +
|-
 +
|uuid
 +
|path('uuid/<uuid:content>/', views.hello_content),
 +
|-
 +
|path
 +
|path('path/<path:content>/', views.hello_content),
 +
|}
 +
 
=팁=
 
=팁=
 
==URL분리==
 
==URL분리==