""" 1)as_view()是入口,獲得view函數地址 2)請求來了調用view函數,內部調用dispatch函數完成請求分發 3)dispatch函數將請求方式映射成視圖類的同名方法,完成請求的處理,獲得相應 4)再將相應的結果一層層返回 """
""" 1)as_view()是入口,獲得view函數地址,在範圍view函數地址時局部禁用csrf認證 2)請求來了調用view函數,內部調用(APIView類的)dispatch函數完成請求分發 3)dispatch函數 二次封裝request、完成三大認證後,再將請求方式映射成視圖類的同名方法,完成請求的處理,獲得相應,再對相應作渲染處理 4)再將相應的結果一層層返回 """
as_view
: 就幹了一件事,禁用csrf認證
python
dispatch
:
經過看了源碼咱們對於渲染內容是JSONRenderer
仍是BrowsableAPIRenderer
django
JSONRenderer與BrowsableAPIRenderer的導入json
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import BrowsableAPIRenderer
api
局部設置app
renderer_classes = [JSONRenderer]
這樣網頁就不會出現渲染只顯示js數據例如iview
class UserAPIView(APIView): renderer_classes = [JSONRenderer] def get(self, request, *args, **kwargs): print(request.query_params) data = { 'status': 0, 'msg': 'get ok', 'results': [], 'token': '123.12321.231' } return Response( data=data, status=status.HTTP_200_OK, headers={'Token': '123as.masd21.asd213sd'}, content_type='application/json' # 默認就是application/json )
全局設置在setting
函數
# drf配置 REST_FRAMEWORK = { # 響應的渲染模塊 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', # 'application/json' 'rest_framework.parsers.FormParser', # 'application/x-www-form-urlencoded' 'rest_framework.parsers.MultiPartParser' # multipart/form-data ], }