DRF的版本
版本控制是作什麼用的,咱們爲何要用
首先要知道版本是幹嗎用的,咱們知道開發項目的時候有多個版本
當項目一直更新,版本就愈來愈多,之前的舊版本就不維護了
那這時,就須要對版本進行控制,這個DRF也給咱們提供了一些封裝好的版本控制方法
版本控制怎麼用
以前視圖篇介紹了APIView,也只帶APIView返回View中的view函數而後調用的dispach方法
那看一下dispatch方法,看下它都作了些什麼
執行self.initial方法以前是各類賦值,包括request的從新封裝,下面是路由分發,那咱們看這個方法遼作了什麼。
能夠看到,version版本信息賦值給了request.version 版本控制方案賦值給了request.versioning_scheme
這個版本控制方案就是配置的版本控制的類
也就是說,APIView經過這個方法初始化本身提供的組件
接下來看一下框架提供了那些版本的控制方法 ---- 在rest_framework.versioning
框架一共給咱們提供了這幾個版本的控制方法,這裏只給出一個,其餘配置相同
詳細用法
第一步 settings.py
第二步 urls.py
|
urlpatterns = [ url(r"^versions", MyView.as_view()), url(r"^(?P<version>[v1|v2]+)/test01", TestView.as_view()), ]
|
測試視圖
|
class TestView(APIView): def get(self, request, *args, **kwargs): print(request.versioning_scheme) ret = request.version if ret == "v1": return Response("版本v1的信息") elif ret == "v2": return Response("版本v2的信息") else: return Response("根本就匹配不到這個路由")
|
其餘版本控制的類,配置方法差很少都同樣服務器
DRF的認證
認證是幹什麼用的
咱們都知道,咱們能夠在網站上登陸,而後能夠有我的中心,對本身信息進行修改
可是咱們每次給服務器發請求,因爲Http的無狀態,致使咱們每次都是新的請求
那麼服務端須要對每次來的請求進行認證,看用戶是否登陸,以及登陸用戶是誰
那麼咱們服務器對每一個請求進行認證的時候,不可能在每一個視圖函數中都寫認證
必定是把認證邏輯抽離出來,之前咱們可能會加裝飾器,或者中間件,來看看DRF框架提供了什麼
認證怎麼用
上面版本控制的時候咱們能夠知道,在dispatch 方法裏,執行了initial方法,那初始化了咱們的版本
若是認證讀的話,能夠看到,版本的下面就是咱們的認證,權限,頻率組件。
認證組件restful
咱們進去認證看框架
咱們這個權限組件返回的是request.user,那麼咱們這裏的request是新的仍是舊的呢
咱們的initial是咱們request從新賦值以後的,所因此這裏的request是新的,也就是Request類實例對象
那這個user必定是一個靜態方法,進去一探究竟
這裏沒有給出反覆的跳轉截圖,自行仔細跳轉
經過上面基本能夠知道,咱們的認證類必定要實現的方法,以及返回值類型,
以及配置的參數authentication_classes
請看具體用法ide
認證的詳細用法
寫一個認證demo,先建一張用戶表,字段爲爲用戶名以及對應的token值函數
models.py
views.py
認證開始
寫一個認證的類
視圖級別認證
|
class TestAuthView(APIView): authentication_classes = [MyAuth, ]
def get(self, request, *args, **kwargs): return Response("測試認證")
|
全局配置認證