drf版本控制 django快取

2022-05-05 00:57:12 字數 2961 閱讀 3121

內建的版本控制類

from rest_framework.versioning import queryparameterversioning,acceptheaderversioning,namespaceversioning,urlpathversioning

各版本的傳參方式

#基於url的get傳參方式:queryparameterversioning------>如:/users?version=v1

#基於url的正則方式:urlpathversioning------>/v1/users/

#基於主機名方法:hostnameversioning------>v1.example.com

#基於django路由系統的namespace:namespaceversioning------>example.com/v1/users/

需要掌握的:urlpathversioning

使用: 1.在setting中設定

'version_param':'version',

'default_version':'v1',

'allowed_versions':['v1','v2'],

2.區域性使用:

versioning_class = urlpathversioning

3.全域性使用

'default_versioning_class':'rest_framework.versioning.urlpathversioning'

'version_param':'version',

'default_version':'v1',

'allowed_versions':['v1','v2'],

路由配置

url(r'^(?p[v1|v2]+)/books/$',

views.users.as_view(),name='ttt'),

4.在檢視類中的request物件中,就可以取出版本號

request.version

反向解析:

url = request.versioning_scheme.reverse('ttt',request=request)

1.為了提高**的併發量

2.三種粒度

全站快取

單頁面快取

頁面的區域性快取

3.6種快取方式

開發調式快取

記憶體快取

資料庫快取

memcache快取(使用python-memcached模組)

memcache快取(使用pylibmc模組)

1 開發除錯(此模式為開發除錯使用,實際上不執行任何操作)

settings.py檔案配置

caches = , }}

2 記憶體快取(將快取內容儲存至記憶體區域中)

settings.py檔案配置

caches = }}

3 檔案快取(把快取資料儲存在檔案中)

settings.py檔案配置

caches =

}

}4 資料庫快取(把快取資料儲存在資料庫中)

settings.py檔案配置

caches =

}

}注意,建立快取的資料庫表使用的語句:

python manage.py createcachetable

5 memcache快取(使用python-memcached模組連線memcache)

settings.py檔案配置

caches = }}

location也可以配置成如下:

'location': 'unix:/tmp/memcached.sock', # 指定區域網內的主機名加socket套接字為memcache快取伺服器

'location': [ # 指定一台或多台其他主機ip位址加埠為memcache快取伺服器

'192.168.10.100:11211',

'192.168.10.101:11211',

'192.168.10.102:11211',

]

6 memcache快取(使用pylibmc模組連線memcache)

settings.py檔案配置

caches = ,

} }location也可以配置成如下:

'location': '/tmp/memcached.sock', # 指定某個路徑為快取目錄

'location': [ # 分布式快取,在多台伺服器上執行memcached程序,程式會把多台伺服器當作乙個單獨的快取,而不會在每台伺服器上覆制快取值

'192.168.10.100:11211',

'192.168.10.101:11211',

'192.168.10.102:11211',

]memcached是基於記憶體的快取,資料儲存在記憶體中.所以如果伺服器宕機的話,資料就會丟失,所以memcached一般與其他快取配合使用

django的快取

全站快取:

兩個中介軟體:

middleware_classes = (

『django.middleware.cache.updatecachemiddleware』, #第一

'django.middleware.common.commonmiddleware',

『django.middleware.cache.fetchfromcachemiddleware』, #最後

) 單頁面快取:

-from django.views.decorators.cache import cache_page

-裝飾器載入檢視函式上即可

@cache_page(5)

頁面區域性快取:

#第乙個引數是時間,第二個引數是別名

}

DRF版本控制

首先,我們開發的專案會有多個版本.其次,我們的專案版本會隨著更新越來越多,我們不可能因出了新版本就不維護舊版本了.那麼,我們就需要對版本進行控制 drf版本控制.目錄原始碼剖析 drf檢視中的apiview返回的是view類中的view函式,然後呼叫dispatch方法.那麼,我們來看看dispat...

DRF版本控制

api 版本控制允許我們在不同的客戶端之間更改行為 同乙個介面的不同版本會返回不同的資料 drf提供了許多不同的版本控制方案。可能會有一些客戶端因為某些原因不再維護了,但是我們後端的介面還要不斷的更新迭代,這個時候通過版本控制返回不同的內容就是一種不錯的解決方案。drf提供了五種版本控制方案,如下圖...

drf 版本控制

目錄因為程式在不停的更新迭代,新版和舊版差別比較大,但此時有些使用者沒用進行更新,還是訪問的舊版,此時就需要進行版本控制,讓使用者體驗更好 from rest framework.versioning import queryparameterversioning,acceptheaderversi...