django rest framework快取應用

2021-08-28 11:27:54 字數 2419 閱讀 8923

在我們web製作過程中進場使用到快取技術,那麼今天python中的一種簡單便捷的快取技術與大家分享;

以下是在省/市/區**聯動的位址查詢做的快取處理

使用快取

省市區的資料是經常被使用者查詢使用的,而且資料基本不變化,所以我們可以將省市區資料進行快取處理,減少資料庫的查詢次數。

在django rest framework中使用快取,可以通過drf-extensions擴充套件來實現。

關於擴充套件使用快取的文件,可參考鏈結

安裝pip install drf-extensions

使用方法

1) 直接新增裝飾器

可以在使用rest_framework_extensions.cache.decorators中的cache_response裝飾器來裝飾返回資料的類檢視的物件方法,如

class cityview(views.apiview):

@cache_response()

def get(self, request, *args, **kwargs):

…cache_response裝飾器可以接收兩個引數

@cache_response(timeout=60*60, cache=『default』)

timeout 快取時間

cache 快取使用的django快取後端(即caches配置中的鍵名稱)

如果在使用cache_response裝飾器時未指明timeout或者cache引數,則會使用配置檔案中的預設配置,可以通過如下方法指明:

rest_framework_extensions =

default_cache_response_timeout 快取有效期,單位秒

default_use_cache 快取的儲存方式,與配置檔案中的caches的鍵對應。

注意,cache_response裝飾器既可以裝飾在類檢視中的get方法上,也可以裝飾在rest framework擴充套件類提供的list或retrieve方法上。使用cache_response裝飾器無需使用method_decorator進行轉換。

2)使用drf-extensions提供的擴充套件類

drf-extensions擴充套件對於快取提供了三個擴充套件類:

listcacheresponsemixin

用於快取返回列表資料的檢視,與listmodelmixin擴充套件類配合使用,實際是為list方法新增了cache_response裝飾器

retrievecacheresponsemixin

用於快取返回單一資料的檢視,與retrievemodelmixin擴充套件類配合使用,實際是為retrieve方法新增了cache_response裝飾器

cacheresponsemixin

為檢視集同時補充list和retrieve兩種快取,與listmodelmixin和retrievemodelmixin一起配合使用。

三個擴充套件類都是在rest_framework_extensions.cache.mixins中。

為省市區檢視新增快取

因為省市區檢視使用了檢視集,並且檢視集中有提供listmodelmixin和retrievemodelmixin的擴充套件(由readonlymodelviewset提供),所以可以直接新增cacheresponsemixin擴充套件類。

修改返回省市區資訊的檢視

from rest_framework_extensions.cache.mixins import cacheresponsemixin

class areasviewset(cacheresponsemixin, readonlymodelviewset):

「」"行政區劃資訊

「」"pagination_class = none # 區劃資訊不分頁

def get_queryset(self):

"""提供資料集

"""if self.action == 'list':

return area.objects.filter(parent=none)

else:

return area.objects.all()

def get_serializer_class(self):

"""提供序列化器

"""if self.action == 'list':

return areaserializer

else:

return subareaserializer

快取資料儲存位置與有效期的設定

我們想把快取資料儲存在redis中,且設定有效期,可以通過在配置檔案中定義的方式來實現。

在配置檔案中增加

rest_framework_extensions =

django rest framework許可權控制

暴露唯讀的介面 支援get head options方法,禁用前端更改資料from rest framework import permissions 引入許可權模組 safe methods get head options class readonly permissions.basepermi...

Django REST framework快速入門

django rest framework快速入門 一.django rest framework簡介 1.在開發rest api的檢視中,雖然每個檢視具體操作的資料不同,但增 刪 改 查的實現流程基本套路化,所以這部分 也是可以復用簡化編寫的 增 校驗請求資料 執行反序列化過程 儲存資料庫 將儲存...

Django Rest framework使用例項

一 修改配置檔案 setting.py django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages django.contri...