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분리== |