內建的版本控制類
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...