tôi đã lấy cách tiếp cận "công nghệ thấp" Jarret Hardie trong một tương tự, err ... bối cảnh (có, đó là một sự chơi chữ ... mà sẽ không có ý nghĩa hoàn hảo để bạn trừ khi tôi nói với bạn rằng tôi không làm điều hướng nhưng đặt màu đường viền của các nút để hiển thị cái nào đã được nhấn).
Nhưng phiên bản của tôi hơi nhỏ gọn hơn tôi nghĩ. Thay vì chỉ xác định một thanh hoạt động biến ngữ cảnh đơn giản trong chế độ xem, tôi trả về một từ điển, nhưng luôn luôn chỉ với một cặp khóa-giá trị: ví dụ: activebar = {'foo': 'hoạt động'}.
Sau đó, trong mẫu tôi chỉ cần viết class = "{{activebar.foo}}" trong neo foo và tương ứng trong các neo khác. Nếu chỉ activebar.foo được định nghĩa là có giá trị "active" thì activebar.bar trong thanh neo sẽ không làm gì cả. Có lẽ "thất bại âm thầm" là nói chuyện Django thích hợp. Và Bob là chú của bạn.
EDIT: Rất tiếc ... một vài ngày đã trôi qua, và trong khi những gì tôi đã viết ở trên đã làm việc cho tôi một vấn đề xuất hiện khi tôi đặt vào thanh điều hướng một neo với một cửa sổ mới làm mục tiêu. Điều đó dường như là nguyên nhân của một trục trặc kỳ lạ: sau khi nhấp vào cửa sổ mới (tab trong Firefox) và sau đó quay lại cửa sổ mới được khởi chạy, các phần của màn hình hiển thị bên dưới thanh điều hướng bị trống bất cứ khi nào tôi di chuyển nhanh di chuột qua các mục trên thanh điều hướng --- mà không cần nhấp vào bất kỳ thứ gì. Tôi đã phải ép buộc một màn hình vẽ lại bằng cách di chuyển thanh cuộn (không phải là một trang tải lại, mặc dù điều đó quá làm việc vì nó liên quan đến một màn hình vẽ lại).
Tôi có quá nhiều lý do để tìm hiểu lý do tại sao điều đó có thể xảy ra. Và có thể tôi đã làm một việc khác khiến cho vấn đề bằng cách nào đó biến mất. Nhưng ... Tôi đã tìm thấy một cách tiếp cận đơn giản hơn đang hoạt động hoàn hảo cho tôi. Trường hợp của tôi là mỗi mẫu con được khởi chạy từ chế độ xem sẽ khiến mục thanh điều hướng được liên kết hiển thị là "hoạt động". Thật vậy, mục thanh điều hướng đó là mục khởi chạy chế độ xem đã khởi chạy mẫu con --- giao dịch thông thường.
Giải pháp của tôi --- chúng ta hãy xem mục điều hướng "đăng nhập" làm ví dụ --- là đặt mục này vào mẫu con chứa biểu mẫu đăng nhập.
{% block login %}active{% endblock %}
Tôi đặt nó vào bên dưới khối tiêu đề nhưng tôi không cho rằng vị trí này quan trọng. Sau đó, trong mẫu cha mẹ có chứa các định nghĩa navbar, cho thẻ li bao quanh neo cho mục đăng nhập navbar tôi đặt ... tốt, đây là các mã:
<li class="{% block login %}{% endblock %}"><a href="/mysite/login">Login</a></li>
Vì vậy khi mẫu trẻ được rendered cha mẹ sẽ hiển thị mục thanh điều hướng đăng nhập là hoạt động và Bob vẫn là chú của bạn.
Cách tiếp cận từ điển mà tôi đã mô tả ở trên là để hiển thị dòng của một nút nào đã được nhấn, khi tất cả đều trên cùng một mẫu con. Điều đó vẫn làm việc cho tôi và vì chỉ có một mẫu con là có liên quan, tôi không thấy phương pháp mới của tôi cho navbars sẽ hoạt động như thế nào trong hoàn cảnh đó. Lưu ý rằng với phương pháp mới cho chế độ xem navbars thậm chí không liên quan. Đơn giản hơn!
Bạn đã kiểm tra điều này chưa? http://stackoverflow.com/questions/1024168/django-is-there-a-better-way-to-bold-the-current-page-link – rinti
Giải pháp CSS đó trông rất khó để duy trì và yêu cầu thêm thông tin ở 3 địa điểm khác nhau. – Boris