django許可權之二級選單

2022-03-13 07:09:30 字數 2359 閱讀 2200

遺漏知識點

1.構建表結構時,誰被關聯誰就是主表,在層級刪除的時候,刪除子表的時候,主表不會被刪除,反之刪除主表的話,字表也會被刪除,

使用related_name=none   反向查詢,起名用的

之前使用表名小寫+__set.all()  使用related_name=none 就直接使用別名.all()不再使用表名小寫+__set方法了

django許可權之二級選單

操作步驟:

1.更改表結構

class

menu(models.model):

title = models.charfield(max_length=32, verbose_name='選單'

) icon = models.charfield(max_length=32, verbose_name='

圖示', null=true, blank=true)

class

permission(models.model):

"""許可權表

"""title = models.charfield(max_length=32, verbose_name='標題'

) url = models.charfield(max_length=32, verbose_name='許可權'

) menu=models.foreignkey("

menu

",on_delete=models.cascade,null=true) ###注意:設定null為true是為了辨別那個路徑是選單許可權!

2.把當前登入的使用者二級選單許可權資訊注入到session中

1.查詢當前登入人的所有許可權

permissions = role.objects.filter(user=user).values("

permissions__url",

"permissions__title

",#拿到使用者的許可權名

"permissions__menu__title

",#拿到二級選單的選單名

"permissions__menu__icon

",#拿到二級選單的圖示

"permissions__menu__pk

").distinct()#拿到二級選單的pk

permission_list = #所有許可權列表
#二級選單以及選單許可權的結構思路:

以pk值為鍵,以選單的title和icon為值

選單許可權列表套字典

permission_menu_dict ={}
# 將當前登入人的許可權列表注入session中

request.session["permission_list"] = permission_list

# 將當前登入人的選單許可權字典注入session中

request.session["permission_menu_dict"] = permission_menu_dict

3.獲取二級選單的資訊menu.html

class="

multi-menu

">#迴圈構造的選單許可權字典,拿到字典的值

class="

item

">

#把圖示,文字,進行渲染

class="

title

">class="

}">}

class="

body

">

#迴圈取值

"}">}

#拿到選單許可權的資料web.py
from django.utils.safestring import mark_safe

from django.template import library

import re

register =library()

@register.inclusion_tag("rbac/menu.html")

def get_menu_styles(request):

permission_menu_dict = request.session.get("permission_menu_dict")

print("permission_menu_dict",permission_menu_dict)

return

4.渲染頁面

#前端渲染頁面,被繼承的頁面layout.html

Django 許可權(3) 動態顯示二級選單

上篇隨筆中,我們實現了動態顯示一級選單,現在考慮這樣一種情況,使用者的選單許可權比較多,這個時候全部並列展現在左側選單就不合適了,所以,現在有這樣乙個需求,即把使用者的選單許可權分類,劃分成二級選單,動態顯示在左側選單,解決方案如下 1 分析需求,要求左側選單如下顯示 客戶管理 客戶列表 賬單管理 ...

CSS二級選單

最近的 要求使用二級選單,本著 能用別人的就用別人的,不能用別人的就用自己的 的原則,在網上找到乙個經典的使用css製作的二級選單,感覺不錯,先記錄下來,以備它用。經典的二級選單如下圖所示 其實,所謂的二級選單都差不多,無非就是為二級選單定義乙個層,當滑鼠放在一級選單上的時候顯示這個層,而將滑鼠從一...

二級選單級聯

好久沒總結了。先總結下這倆個月,看了點.net後台,看了點c 但不是很多,這倆天看了點php.總結總結下.net遇到的問題吧。第乙個其實就是乙個二級選單的級聯問題。用乙個簡單的例子說明一下。例子是乙個省份和城市的級聯,資料都從乙個資料庫的一張表裡取。前台 倆個dropdownlist控制項,這裡注意...