当我们进入一个页面时,相应的标签会变亮,这个功能也需要后台逻辑进行判断
方法一: 传值大发(很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 == "/"