Django项目实战 - 导航栏激活功能


 当我们进入一个页面时,相应的标签会变亮,这个功能也需要后台逻辑进行判断

 

方法一: 传值大发(很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 == "/"


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM