url 다루기
링크 만들기
href 어트리뷰트로 link 주소를 설정합니다. 지역구가 출력되는 곳에 링크를 추가하려면,
// C:\Code\mysite\elections\templates\elections\index.html
<!--기존 코드는 유지해주세요. -->
<td> {{candidate.area}} </td> <!--지역구가 출력되는 줄을 수정합니다. -->
<!--기존 코드는 유지해주세요. -->
// C:\Code\mysite\elections\templates\elections\index.html
<!--기존 코드는 유지해주세요. -->
<td> <a href = "areas/{{candidate.area}}/">{{candidate.area}}</a> </td>
<!--기존 코드는 유지해주세요. -->
url 다루기
localhost:8000/areas/미국/에 대한 url을 등록해주지 않았기 때문에 링크를 클릭하면 페이지를 찾을 수 없다는 창이 뜹니다.(Page not found)
url을 등록하려면 urls.py와 views.py를 수정합니다.
# C:\Code\mysite\elections\urls.py
# 기존 코드 유지
urlpatterns = [
url(r'^$', views.index),
url(r'^areas/(?P<area>.+)/$', views.areas)
]
# C:\Code\mysite\elections\views.py
# 기존 코드 유지
def areas(request, area) : #어떤 지역인지를 매개변수 area로 받습니다.
return HttpResponse(area)
url의 첫 번째 인자 - r'^areas/(?P<area>.+)/$'
Django에서 url의 첫 번째 인자는 보통 r'^.../...$'
과 같은 형태를 띄고 있습니다.
따옴표 안에 들어가는 내용은 정규표현식으로 나타냅니다.
정규표현식의 내용을 간략히 훑으면,
^
: 문자열의 시작을 알립니다areas
: 문자 그대로 스트링areas
입니다.$
: 문자열의 끝을 알립니다.(?<name>...)
: symbolic 그룹 이름name
으로 그룹과 매칭 되는 부분 문자열에 접근이 가능합니다.(?P<area>.+)
의 경우- group 이름은
area
(부등호<>
로 감싸진 부분)이며, 이를 통해views.areas
에 문자열을 전달합니다. .+
는 개행 문자를 제외한 모든 문자를 의미합니다.
- group 이름은
정규표현식에 대한 더 자세한 내용은 다음을 참고하세요.
- 정규표현식과 패턴을 배울 수 있는 사이트(한글) : 정규표현식과 패턴들
- python 정규표현식에 대한 official documentation(영어) : python - re
url의 두 번째 인자 - views.areas
첫번째 인자(정규표현식)와 매칭되는 주소를 요청받으면 views.areas
함수가 호출됩니다.
-
강의노트에서 url패턴 부분이
위대연
2018.7.9 15:40
0
-
장고 최신버전에서 urls.py가 정규표현식으로 되어있지 않아서 막히시는분들 참고욤...
-
2018.1.7 17:32
2
-
링크 주소 변경 어떻게 하나요..?
김진주
2017.11.10 16:33
1
-
정규표현식 areas/(?P<area>.+) 안에서
-
2017.8.21 02:04
1
-
elections/urls.py을 변경해도 url을 찾지못하고 있습니다.
-
2016.7.15 16:55
2
-
동영상 코드 질문입니다.
-
2016.4.4 07:43
1