Django 許可權資訊初始化

2021-09-25 11:11:54 字數 3522 閱讀 7087

from django.db import

models

class

menu(models.model):

"""選單組:

"""title = models.charfield(max_length=32)

def__str__

(self):

return

self.title

class

group(models.model):

"""許可權組

"""caption = models.charfield(verbose_name='

組名稱',max_length=16)

menu = models.foreignkey(verbose_name='

所屬選單

',to='

menu

',default=1) #

多個組需要屬於乙個選單

def__str__

(self):

return

self.caption

class

permission(models.model):

"""許可權表

"""title = models.charfield(verbose_name='

標題',max_length=32)

url = models.charfield(verbose_name="

含正則url

",max_length=64)

menu_gp = models.foreignkey(verbose_name='

組內選單

',to='

permission

',null=true,blank=true,related_name='

x1') #

多種許可權屬於乙個組

code = models.charfield(verbose_name="

**",max_length=16)

group = models.foreignkey(verbose_name='

所屬組',to="

group")

class

meta:

verbose_name_plural = "

許可權表"

def__str__

(self):

return

self.title

class

user(models.model):

"""使用者表

"""username = models.charfield(verbose_name='

使用者名稱',max_length=32)

password = models.charfield(verbose_name='

密碼',max_length=64)

email = models.emailfield(verbose_name='

郵箱',max_length=32)

roles = models.manytomanyfield(verbose_name='

具有的所有角色

',to="

role

",blank=true) #

乙個使用者可以有多種許可權,一種許可權可是是多個使用者所共有

class

meta:

verbose_name_plural = "

使用者表"

def__str__

(self):

return

self.username

class

role(models.model):

"""角色表

"""title = models.charfield(max_length=32)

permissions = models.manytomanyfield(verbose_name='

具有的所有許可權

',to='

permission

',blank=true) #

一種許可權可以對應多種角色,乙個角色可以對應多個許可權

class

meta:

verbose_name_plural = "

角色表"

def__str__

(self):

return self.title

from django.conf import

settings

definit_permission(user,request):

"""初始化許可權資訊,獲取許可權資訊並放置到session中。

:param user:

:param request:

:return:

"""permission_list = user.roles.values('

permissions__id',

'permissions__title

', #

使用者列表

'permissions__url',

'permissions__code',

'permissions__menu_gp_id

', #

組內選單id,null表示是選單

'permissions__group_id',

'permissions__group__menu_id

', #

選單id

'permissions__group__menu__title

',#選單名稱

).distinct()

#選單相關(以後再匹配)

sub_permission_list =

for item in

permission_list:

tpl =

request.session[settings.permission_menu_key] =sub_permission_list

#許可權相關

result ={}

for item in

permission_list:

group_id = item['

permissions__group_id']

code = item['

permissions__code']

url = item['

permissions__url']

if group_id in

result:

result[group_id][

'codes

' result[group_id][

'urls

'

else

: result[group_id] =

#許可權url

request.session[settings.permission_url_dict_key] = result

django 初始化配置

用aptana建立的乙個專案,直接執行是看不到效果的,我們需要對它進行配置才行 1.語言時區配置 time zone asia shanghai use tz true language code zh cn 2.靜態檔案位址配置 這裡建議是把靜態檔案單獨部署在乙個目錄下 import sys pr...

Django專案初始化

1.初始化專案結構圖 shiyanlou project 專案根路徑 gitignore 提交git倉庫時,不提交的檔案必須要在這裡進行標註 readme.en.md 英文 專案介紹 readme.md 中文專案簡介 requirements.txt django專案安裝檔案 celery task...

初始化Django專案結構

shiyanlou project 專案根路徑 gitignore 提交git倉庫時,不提交的檔案必須要在這裡進行標註 readme.en.md 英文 專案介紹 readme.md 中文專案簡介 requirements.txt django專案安裝檔案 動態的,經常變化 celery task 用...