表結構
from django.db import models
class menu(models.model):
"""選單
"""title = models.charfield(verbose_name='選單', max_length=32)
icon = models.charfield(verbose_name='圖示', max_length=32)
def __str__(self):
return self.title
class permission(models.model):
"""許可權表
"""title = models.charfield(verbose_name='標題', max_length=32)
url = models.charfield(verbose_name='含正則的url', max_length=128)
# 自關聯
pid = models.foreignkey(verbose_name='預設選中許可權', to='permission', related_name='ps', null=true, blank=true,
help_text="對於無法作為選單的url,可以為其選擇乙個可以作為選單的許可權,那麼訪問時,則預設選中此許可權",
limit_choices_to=)
menu = models.foreignkey(verbose_name='選單', to='menu', null=true, blank=true, help_text='null表示非選單')
def __str__(self):
return self.title
class role(models.model):
"""角色
"""title = models.charfield(verbose_name='角色名稱', max_length=32)
permissions = models.manytomanyfield(verbose_name='擁有的所有許可權', to='permission', blank=true)
def __str__(self):
return self.title
class userinfo(models.model):
"""使用者表
"""name = models.charfield(verbose_name='使用者名稱', max_length=32)
password = models.charfield(verbose_name='密碼', max_length=64)
email = models.charfield(verbose_name='郵箱', max_length=32)
roles = models.manytomanyfield(verbose_name='擁有的所有角色', to='role', blank=true)
def __str__(self):
return self.name
獲取許可權資訊
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django.conf import settings
def init_permission(current_user, request):
"""使用者許可權的初始化
:param current_user: 當前使用者物件
:param request: 請求相關所有資料
:return:
"""# 2. 許可權資訊初始化
# 根據當前使用者資訊獲取此使用者所擁有的所有許可權,並放入session。
# 當前使用者所有許可權
permission_queryset = current_user.roles.filter(permissions__isnull=false).values("permissions__id",
"permissions__title",
"permissions__url",
"permissions__pid_id",
"permissions__menu_id",
"permissions__menu__title",
"permissions__menu__icon"
).distinct()
# 3. 獲取許可權+選單資訊
permission_list =
menu_dict = {}
for item in permission_queryset:
)menu_id = item['permissions__menu_id']
if not menu_id:
continue
node =
if menu_id in menu_dict:
else:
menu_dict[menu_id] =
request.session[settings.permission_session_key] = permission_list
request.session[settings.menu_session_key] = menu_dict
Tree 預設展開某個節點
根據flex的文件我們可以知道,要展開某個節點主要有兩種方法 1 expanditem,這個方法只展開指定的節點,不會展開子節點。2 expandchildof,這個方法會展開指定節點的子節點。但是單單使用這兩個方法不一定可以,還需要注意幾個問題 1 展開的物件一定要是通過selectitem方法得...
element ui 設定選單欄展開
element ui側邊欄預設要全部展開怎麼做?element ui文件中是這麼寫的 default openeds當前開啟的sub menu的key陣列 給標籤加上這個屬性 class el menu vertical open handleopen close handleclose theme...
Flex遮蔽預設右鍵選單。
首先需要修改index.template.html生成的靜態模板頁面,使用js監聽document.onmousedown事件,並呼叫flex裡暴露的方法,如下 index為生成的flash物件id function onnsrightclick e returnfalse function oni...