rest-framework之响应器

1、响应器作用

根据用户请求的URL 或 用户可接受的类型,筛选出合适的 渲染组件;

比如我们用浏览器访问时就会有一个简单样式的页面,用postman访问就只是json格式的数据;


2、内置的响应器

显示json格式:JSONRenderer

访问URL:

  • http://127.0.0.1:8000/test/?format=json
  • http://127.0.0.1:8000/test.json
  • http://127.0.0.1:8000/test/


默认显示格式:BrowsableAPIRenderer(可以修改它的html文件)

访问URL:

  • http://127.0.0.1:8000/test/?format=api
  • http://127.0.0.1:8000/test.api
  • http://127.0.0.1:8000/test/


表格方式:AdminRenderer

访问URL:

  • http://127.0.0.1:8000/test/?format=admin
  • http://127.0.0.1:8000/test.admin
  • http://127.0.0.1:8000/test/


form表单方式:HTMLFormRenderer

访问URL:

  • http://127.0.0.1:8000/test/?format=form
  • http://127.0.0.1:8000/test.form
  • http://127.0.0.1:8000/test/


3、使用

1)局部使用
views.py

from django.shortcuts import render
from app01 import models
from rest_framework.views import  APIView
from rest_framework.response import  Response
from rest_framework.parsers import JSONParser

# 导入模块
from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer

# Create your views here.

class Test(APIView):
    # 如果只加JSONRenderer,用浏览器打开时就只是json数据,页面没有样式
    # 加了BrowsableAPIRenderer,用浏览器打开时就会有样式
    renderer_classes = [JSONRenderer, BrowsableAPIRenderer, ]  # 响应器
    def post(self, request):
        print(request.data)
        print(type(request.data))
        return Response()


image

image


2)全局使用

settings里配置:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer']
}


虽然可以局部使用和全局使用,但是一般建议不用动就行了;

猜你喜欢

转载自www.cnblogs.com/weiyiming007/p/12523479.html