from django.db importmodels
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 importsettings
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 用...