1.可切片
2.可迭代
3.惰性查詢
:為了節省記憶體
book_list=book.objects.all()惰性查詢
,先取出
queryset
但是不會立刻執行
sql語句
,什麼時 候用什麼時候執行
何時用到查詢集:
print(book_list)
for...
切片if book_list
4.快取機制
(快取到記憶體
)book.objects.all()
簡單的列印queryset不會快取
,執行兩次
sql語句
print(book_list)
print(book_list)
正常的會快取
for obj in book_list
for obj in book_list
執行兩次時,sql之執行一次
每個queryset會維持乙個快取空間
,優點:一次查詢
,多次使用
book.objects.all().iterator() #生成器物件 將
queryset
封裝到生成器中
缺點:只能向下
,只能用一次
1.二級選單預設顯示
在過濾器中:
1 @register.inclusion_tag("在與過濾器對應的menu.html中rbac/menu.html")
2def
get_menu_styles(request):
3 permission_menu_dict = request.session.get("
permission_menu_dict")
4print("
permission_menu_dict
",permission_menu_dict)
5for val in
permission_menu_dict.values():
6for item in val["
children"]:
7 val["
class
"]="
hide
"8 ret=re.search("
^{}$
".format(item["
url"
]),request.path)9if
ret:
10 val["
class
"]=""
#為permission_menu_dict增加乙個欄位class
11return
:
12.沒有許可權的按鈕不顯示class="
multi-menu
">
2
3class="
item
">
4class="
title
">class="
}">}
5class="
body }
"> #
為body新增hide類名
6 7"
}">}
8 910
11
12
做法一:給按鈕的顯示加乙個判斷
1缺點:所有的按鈕都要判斷2class="
btn btn-default
" href="
/customer/add/
">
3class="
fa fa-plus-square
" aria-hidden="
true
">
新增客戶
45
做法二:.沒有許可權的按鈕不顯示
(過濾器版本
)做法封裝到乙個過濾器中,避免**冗餘
,前端在需要的地方呼叫即可
過濾器部分:
1前端呼叫部分:@register.filter
2def
has_permission(btn_url,request):
3 permission_names = request.session.get("
permission_list")
4return btn_url in permission_list
1 2 3刪除,編輯部分class="
btn btn-default
" href="
/customer/add/
">
4class="
fa fa-plus-square
" aria-hidden="
true
">
新增客戶
56
:表頭:
1 2編輯表內容:3 4 5刪除
6
1 23缺點:做法麻煩"color: #333333;
" href="
/customer/edit/}/
">
4class="
fa fa-edit
" aria-hidden="
true
">56
7 89"
color: #d9534f;
" href="
/customer/del/}/
">class="
fa fa-trash-o
">
1011
做法三:新增乙個字段
,以後用的時候就不用考慮路徑的正則問題
給permision加乙個別名字段
取出來並注入session
1 permission_names=過濾器中使用:2for item in
permissions:
permissions__name
"])
1前端使用:@register.filter
2def
has_permission(btn_url,request):
3 permission_names=request.session.get("
permission_names")
4print("
permission_names
",permission_names)
5return btn_url in permission_names
1 23"color: #333333;
" href="
/customer/edit/}/
">
4class="
fa fa-edit
" aria-hidden="
true
">56
7 89"
color: #d9534f;
" href="
/customer/del/}/
">class="
fa fa-trash-o
">
1011