흠 / _archives.html ... { % 에 대한 날짜 에 date_list % } <LI> <a href= "{% URL 'blog:archive' date.year date.month %}"> {{date.year}}年{{}} date.month月 </a>에 </ 리> { % ENDFOR % } ...
다음은 {% url %}
템플릿 태그의 역할은 분석보기 기능입니다 blog:archive
해당 URL 패턴 및 연도와 월에 URL 패턴을 대체 date.year
, date.month
값.
{% url %}
첫 번째 파라미터는 엔드 포인트 콜론으로 분리 된 두 개의 부분으로 구성되어, 수신 된 태그 템플릿 포함보기 기능 해석된다. 애플리케이션 urls.py의 첫 부분이 지정된 app_name
값 (즉, 공간으로서의되도록하더라도 다른 애플리케이션 기능 명칭에 동일한 뷰는 충돌하지 않을 것이다)의 제 2 부분 path
함수 전달 name
파라미터 값. 예를 들어, 모듈 urls.py 블로그 애플리케이션에서, 우리는 지정 app_name = 'blog'
, archive
URL 패턴 함수이다 path('archives/<int:year>/<int:month>/', views.archive, name='archive')
따라서, 엔드 포인트의 대응하는 값 blog:archive
.
{% url %}
수신 된 태그 템플릿 URL 경로 매개 변수의 다른 매개 변수 캡처에 매개 변수 URL 경로 모드 컨버터의 필요성 즉, 값. 예를 들어, archive
보기 모드는 기능에 해당하는 URL입니다 archives/<int:year>/<int:month>/
, 가정 date.year=2017
, date.month=5
다음 {% url 'blog:archive' date.year date.month %}
템플릿이 레이블에서 반환 / 아카이브 / 5분의 2,017 /가.
왜 사용 {% URL %} 템플릿 태그 그것? 사실, 하이퍼 HREF 속성이 설정되어 /archives/{{ date.year }}/{{ date.month }}/
달성 될 수있는 동일한 목적 있지만, 그러한 접근 방식은 하드 - 코딩된다. 비록 blog:archive
도면이 형태에 대응하는 URL 패턴의 함수이지만, 언젠가 경우,이 패턴은 변경? 당신이 하드 코딩 된 표현을 사용하는 경우, 사방이해야 할 /archives/{{ date.year }}/{{ date.month }}/
새로운 모델을 수정합니다. 당신이 {% URL %} 템플릿 태그를 사용하는 경우, 당신은 변경할 필요가 없습니다.