當我們進入一個頁面時,相應的標簽會變亮,這個功能也需要后台邏輯進行判斷
方法一: 傳值大發(很Low的方法,如果子頁面特別多,就需要在每個view中進行傳值)
在每個url頁面對應的view中傳遞一個“值”
class OrgCourseView(View): """ 機構課程頁面 """ def get(self, request, org_id): current_page = "course" # 這里定義一個值 course_org = CourseOrg.objects.get(id=int(org_id)) all_courses = course_org.course_set.all() return render(request, 'org-detail-course.html', { 'all_courses': all_courses, 'course_org': course_org, 'current_page': current_page, #傳遞給html進行判斷 })
在html進行值判斷
<div class="left"> <ul> <li class="{% ifequal current_page "home" %}active2{% endifequal %}"><a href="{% url "org:org_home" course_org.id %}">機構首頁</a></li> <li class="{% ifequal current_page "course" %}active2{% endifequal %}"><a href="{% url "org:org_course" course_org.id %}">機構課程</a></li> <li class="{% ifequal current_page "desc" %}active2{% endifequal %}"><a href="{% url "org:org_desc" course_org.id %}">機構介紹</a></li> <li class="{% ifequal current_page "teacher" %}active2{% endifequal %}"><a href="{% url "org:org_teacher" course_org.id %}">機構講師</a></li> </ul> </div>
方法二: 在html判斷url中的值(推薦)
直接在html進行判斷, 這里使用了 Django template的slice過濾..過濾request.path中的URL相對路徑的前幾位
<ul> <li {% if request.path == "/" %}class="active"{% endif %}><a href="{% url "index" %}">首頁</a></li> <li {% if request.path|slice:"4" == "/org" %}class="active"{% endif %} ><a href="{% url "org:org_list" %}">授課機構</a></li> </ul>
首頁很簡單,不需要進行slice 直接 request.path == "/"