第十一篇:DRF之基於角色的許可權控制和django快取
阿新 • • 發佈:2021-07-28
第十一篇:DRF之基於角色的許可權控制和django快取
目錄一、基於角色的許可權控制(django內建的auth體系)
1、RBAC介紹
簡單來說,RBAC 是一種基於角色的訪問控制(Role-Based Access Control ),一般使用者公司內部系統。
2、django內建的RBAC圖解
django中內建了一套基於RBAC 的許可權系統。我們每次執行資料庫遷移命令時,總會創建出多張表,效果圖如下所示。
django中提供了6張表,來實現角色的訪問控制。
3、django內建的RBAC表
效果如下。
二、django快取
1、前後端不分離
我們在settings.py
中進行如下配置。【以快取到檔案為例】
CACHES = { 'default': { # 指定快取使用的引擎 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定快取的路徑 'LOCATION': 'E:\django_cache', # 快取超時時間(預設為300秒,None表示永不過期) 'TIMEOUT': 300, 'OPTIONS': { # 最大快取記錄的數量(預設300) 'MAX_ENTRIES': 300, # 快取到達最大個數之後,剔除快取個數的比例,即:1/CULL_FREQUENCY(預設3) 'CULL_FREQUENCY': 3, } } }
- 單頁面快取
"""單頁面快取只需要新增裝飾器即可"""
from django.views.decorators.cache import cache_page
@cache_page(5) # 區域性快取5秒鐘
def test1(request):
import time
current_time = time.time()
return render(request, 'test.html', context={'current_time': current_time})
同時,我們在配置的檔案中,看到快取資料。
- 區域性快取
<body> <p>測試的時間資料{{ current_time }}</p> <hr> {% load cache %} <!--5代表5秒鐘,name為唯一key值,只要不重複即可隨便取--> {% cache 5 'name' %} <p>區域性快取{{ current_time }}</p> {% endcache %} </body>
- 全站快取
"""只需要新增兩個中介軟體即可"""
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
...
'django.middleware.cache.FetchFromCacheMiddleware'
]
# 全站快取時間 5秒鐘
CACHE_MIDDLEWARE_SECONDS = 5
2、前後端分離
from django.core.cache import cache
# 需要存入快取時
"""內部使用pickle模組,甚至可以儲存物件"""
cache.set('key',value可以是任意資料型別)
# 去出快取時
cache.get('key')
"""應用"""
比如:第一次查詢所有圖書,你通過跨表查詢查到需要的資料,直接存入到快取中,
後續需要查資料,直接先去快取查,如果有直接返回,如果沒有,再去聯表查詢,
返回的時候同時再存入快取。