django創建路徑導航


路徑導航 :
        1.怎樣設置需要登錄但又不需要驗證權限的路徑 :
                在settings中定義一個列表,列表中以正則的方式放入需要登錄但無需驗證的權限的項.在中間件中進行循環訪問,如有符合的項,立即return即可,但要注意中間件中定義的其它必須項,可設置為None.
request.current_menu_id = None
 
request.breadcrumb_list = [{'title': '首頁', 'url': '/index/'}]
# 登陸后不需要權限
for i in settings.NO_PERMISSION_LIST:
    if re.match(i, url):
        return
        2.設置路徑導航的思路 : 
                在中間件中定義一個列表存放訪問的路徑,並在前端動態渲染出來.
                知識點 : 動態生成頁面 : 自定義標簽 inclusion_tag;將存在session中的menu以字典的形式存放,方便在中間件中取出二級菜單的路徑和普通權限的路徑.
        
for permission in permission_dict.values():
    
    if re.match(r'^{}$'.format(permission['url']), url):
        pid = permission.get('pid')
        id = permission.get('id')
        
        if pid:    #存在pid,是普通權限
            request.current_menu_id = pid
            request.breadcrumb_list.append(           #添加二級菜單路徑
                {'title': permission_dict[str(pid)]['title'], 'url': permission_dict[str(pid)]['url']})
            request.breadcrumb_list.append({'title': permission['title'], 'url': permission['url']})   #添加普通權限路徑
         
        else:      #pid不存在,表示訪問的是二級菜單
            request.current_menu_id = id
            request.breadcrumb_list.append({'title': permission['title'], 'url': permission['url']})   #添加二級菜單路徑
        
        return
        3.通過自定義標簽動態渲染導航欄 :
@register.inclusion_tag('breadcrumb.html')     #inclusion中的內容 : 將字典傳入breadcrumb.html,注意傳入參數
def breadcrumb(request):
    return {'breadcrumb_list': request.breadcrumb_list}
        4.前端通過if判斷設置導航欄結尾是否能被重復選擇
<div>
    <ol class="breadcrumb no-radius no-margin" style="border-bottom: 1px solid #ddd;">
 
        {% for breadcrumb in breadcrumb_list %}
            {% if forloop.last %}
                <li class="active">{{ breadcrumb.title }}</li>
            {% else %}
                <li><a href="{{ breadcrumb.url }}">{{ breadcrumb.title }}</a></li>
            {% endif %}
        {% endfor %}
    </ol>
</div>
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM