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