REST framework 渲染模組

2021-10-02 19:35:34 字數 1845 閱讀 8139

根據 使用者請求url 或 使用者可接受的型別,篩選出合適的 渲染元件。(頁面 postman)

from rest_framework.renderers import jsonrenderer

from rest_framework.renderers import browsableapirenderer

from rest_framework.renderers import adminrenderer

from rest_framework.renderers import htmlformrenderer

顯示json格式:jsonrenderer

訪問url:

預設顯示格式:browsableapirenderer(可以修改它的html檔案)

訪問url:

**方式:adminrenderer

訪問url:

form表單方式:htmlformrenderer

訪問url:

原始碼入口

apiview類的dispatch方法中:self.response = self.finalize_response(request, response, *args, **kwargs)

原始碼分析

# 最後解析reponse物件資料

self.response = self.finalize_response(request, response, *args, **kwargs) 點進去

​# 拿到執行的解析類的物件們

neg = self.perform_content_negotiation(request, force=true) 點進去

​# 獲得解析類物件

renderers = self.get_renderers() 點進去

​# 從檢視類中得到renderer_classes請求類,如何例項化乙個個物件形參解析類物件列表

return [renderer() for renderer in self.renderer_classes]​​

# 重點:self.renderer_classes獲取renderer_classes的順序

# 自己檢視類的類屬性(區域性配置) =>

# apiview類的類屬性設定 =>

# 自己配置檔案的default_renderer_classes(全域性配置) =>

# drf配置檔案的default_renderer_classes

在專案的settings.py中

rest_framework =
在views.py檢視類中提供對應的類屬性

from rest_framework.renderers import jsonrenderer

class test2(apiview):

# 區域性配置

renderer_classes = [jsonrenderer] # 所在類區域性配置

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

return response('drf get ok 2')

​ def post(self, request, *args, **kwargs):

return response('drf post ok 2')

在setting.py中配置rest_framework,完成的是全域性配置,所有介面統一處理

如果只有部分介面特殊化,可以完成 - 區域性配置

rest framework之渲染器

根據 使用者請求url 或 使用者可接受的型別,篩選出合適的 渲染元件。序列化 友好的展示資料 首先要在settins.py中將rest framework元件加進去 引入渲染器類,然後將他們作為乙個列表的元素賦值給renderer classes 配置屬性,如下 from rest framewo...

rest framework元件 之 渲染器與版本

渲染器版本 規定頁面顯示的效果 無用,了解即可 區域性渲染 只返回json資料。效果 看另一種情況 既返回json資料,又巢狀在html中。注意 容易出bug.效果如下 看一下原始碼 預設全域性。全域性渲染 rest framework 先看一下原始碼 圈出來指的就是版本。rest framewor...

rest framework 解析器,渲染器

解析器的作用就是服務端接收客戶端傳過來的資料,把資料解析成自己可以處理的資料。本質就是對請求體中的資料進行解析。解析器工作原理的就是拿到請求的contenttype來判斷前端給我的資料型別是什麼,然後我們在後端使用相應的解析器去解析資料。ps django 原生是不支援 json 型別的資料,資料通...