2014-02-26 2 views
13

이 기본 메뉴 고려 있는지 확인 :장고 동적 뷰 URL을 취득하고 현재 페이지

<ul class="nav navbar-nav"> 
    <li class="active"><a href="{% url 'home' %}">Home</a></li> 
    <li><a href="{% url 'about' %}">About</a></li> 
</ul> 

나는 현재 페이지의 링크를 활성 클래스를 제공하기 위해 노력하고있어, 그리고 나는이 동적으로 기반을 수행 할 현재 URL 및보기의 URL 따라서 사용자가 About 페이지를 방문하면 해당 페이지는 현재 활성 클래스를 가지며 홈페이지에는 나타나지 않습니다.

{% if request.get_full_path = "{% url 'home' %}" %}class="active"{% endif %} 
{% if request.get_full_path = "{% url 'about' %}" %}class="active"{% endif %} 

을하지만, 분명히 나는 ​​두 {% ... %}가 서로의 안에 중첩이 기운 다 :

나는 <li></li> 태그의 내부처럼 작동하는 논리 싶습니다.

둘을 중첩하는 방법에 대한 아이디어가 있으십니까?

+0

단순히 'request.get_full_path = url'집 '작업이 아닙니까? – njzk2

+0

@ njzk2 'if if expression' 오류가 발생하면'Unused ''home '을 제공합니다. 나쁜 일이지만 멋지고 깔끔합니다. – agconti

+1

http://stackoverflow.com/questions/340888/navigation-in-django가 도움이됩니다. – alecxe

답변

31

보통 내 탐색에는 answer alecxe linked to과 비슷한 방식으로 템플릿 상속을 사용합니다. 그러나 시도하고있는 것처럼 if 태그의 현재 URL 사용을 비교할 수 있습니다.

url 태그를 사용하면 결과를 변수에 저장할 수 있습니다. 그런 다음 if 태그에서 해당 변수를 사용할 수 있습니다.

{% url 'home' as home_url %} 
{% if request.get_full_path == home_url %}class="active"{% endif %} 
+0

이 용액은 더 건조합니다. 감사! – agconti

+1

이 접근법의 또 다른 장점은 링크를 만들 때'home_url'을 필요로한다는 것입니다. 그래서 실제로 유일한 추가 사항은'request.get_full_path'에'if'입니다. Btw의 경우 템플릿 컨텍스트 변수에'request'를 추가해야합니다.이 컨텍스트 변수는 물론 기본 컨텍스트 변수로 넣을 수 있습니다. – rednaw