預設展開非選單URL

2022-07-20 12:57:14 字數 2625 閱讀 6254

表結構

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...