根據 使用者請求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 型別的資料,資料通...