나는 (예, 그것은 말장난 ... 당신에게 완벽한 이해가되지 것입니다 내가 당신을 말하지 않는 한 유사한 잘못을 ... 맥락에서 자렛 하디의 "낮은 기술"접근 방식을 찍은 I nav를하고있는 것이 아니라 어느 버튼이 눌러 졌는지 보여주기 위해 버튼의 경계 색을 설정하는 것).
하지만 내 버전은 조금 더 콤팩트라고 생각합니다. 보기에서 하나의 간단한 컨텍스트 변수 활성 막대를 정의하는 대신 사전을 반환하지만 항상 하나의 키 - 값 쌍만 사용합니다. activebar = { 'foo': '활성'}.
그런 다음 템플릿에서 나는 class = "{{activebar.foo}}"를 foo 앵커에 작성하고 그에 따라 다른 앵커에 작성합니다. activebar.foo만이 "active"값을 가지도록 정의 된 경우 bar anchor의 activebar.bar는 아무 작업도 수행하지 않습니다. 어쩌면 "자동으로 실패 함"이 적절한 장고 이야기 일 수 있습니다. 그리고 밥은 당신의 삼촌입니다.
편집 : 죄송합니다 ... 며칠이 지났습니다. 위에서 작성한 내용이 나에게 도움이되었지만 대상으로 새 창으로 앵커를 navbar에 넣으면 문제가 발생했습니다. 이상한 결함의 원인 인 것 같았습니다. Firefox의 새 창 (Firefox의 탭)을 클릭 한 다음 새 창을 시작한 창으로 돌아간 후 Navbar 아래에있는 표시가 비어있게되었습니다. 아무 것도 클릭하지 않고 탐색 바의 항목 위에 커서를 놓습니다. 스크롤 막대를 움직여 화면 다시 그리기를 강제해야했습니다 (페이지 다시로드는 아니지만 화면 다시 그리기가 포함되어 있기 때문에 너무 효과적이었습니다).
나는 왜 그런 일이 일어날지를 파악하기에는 너무 많은 멍청하다. 어떻게 든 사라진 문제를 일으키는 다른 일을했을 수도 있습니다. 그러나 ... 나는 나를 위해 완벽하게 작동하는 더 단순한 접근법을 발견했습니다. 내 상황에 따라 뷰에서 시작되는 모든 하위 템플릿은 연관된 navbar 항목을 "활성"으로 표시해야합니다. 사실, 그 navbar 항목은 자식 템플릿을 시작한 뷰를 시작한 항목입니다. 일반적인 거래입니다.
내 솔루션 --- 예를 들어 "로그인"navbar 항목을 가져와 봅시다 --- 로그인 양식이 포함 된 하위 템플릿에 넣으십시오.
{% block login %}active{% endblock %}
나는 제목 블록 아래에 그것을 넣어하지만 배치가 중요 할 생각하지 않습니다. 아이 템플릿을 렌더링 할 때 따라서
<li class="{% block login %}{% endblock %}"><a href="/mysite/login">Login</a></li>
: 그리고 여기, 음 ... 내가 넣어 로그인 메뉴 바 항목의 앵커를 둘러싸고있는 리튬 태그, 네비게이션 바의 정의를 포함하는 부모 템플릿에 코드입니다 부모는 로그인 navbar 항목을 활성화 된 것으로 표시하고 Bob은 여전히 삼촌입니다.
위에서 설명한 사전 접근 방식은 모두 동일한 하위 템플릿에있는 버튼 중 어떤 줄이 눌 렸는지 표시하는 것이 었습니다. 그것은 여전히 저에게 효과적입니다. 하나의 하위 템플릿 만 관련되어 있기 때문에, 내 환경에서 navbar에 대한 새로운 메소드가 어떻게 작동하는지 보지 못합니다. navbars 뷰에 대한 새로운 메소드가 포함되어 있지 않습니다. 더 간단 해!
이 내용을 확인하셨습니까? http://stackoverflow.com/questions/1024168/django-is-there-a-better-way-to-bold-the-current-page-link – rinti
CSS 솔루션은 유지 관리가 매우 어려워서 정보를 추가해야합니다. 3 개의 다른 장소. – Boris