이전에 공부하던 부분부터 이어서 플레이할 수 있습니다.
이어서 보기 처음부터 보기

링크 만들기

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에 문자열을 전달합니다.
    • .+는 개행 문자를 제외한 모든 문자를 의미합니다.

정규표현식에 대한 더 자세한 내용은 다음을 참고하세요.

url의 두 번째 인자 - views.areas

첫번째 인자(정규표현식)와 매칭되는 주소를 요청받으면 views.areas함수가 호출됩니다.