zoukankan      html  css  js  c++  java
  • 【1119 | Day62】drf之渲染模块

    一、渲染模块

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

    用户请求URL

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

    二、内置渲染器

    通过源码,我们可以知道渲染内容主要是JSONRendererBrowsableAPIRenderer

    //导入
    from rest_framework.renderers import JSONRenderer 
    from rest_framework.renderers import BrowsableAPIRenderer
    

    JSONRenderer:

    • 显示json格式
    • 访问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/  
      

    三、局部渲染

    局部配置:

    可以在视图类中通过renderer_classes类属性对该视图的数据响应渲染做配置。

    在我们定义基础APIView的类添加renderer_classes = [JSONRenderer]这样网页就不会出现渲染只显示js数据。

    例如:

    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
            )
    

    四、全局渲染

    全局配置:在settings.py

    可以在项目配置文件的drf配置中通过DEFAULT_RENDERER_CLASSES对该视图的数据响应渲染做配置。

    例如:

    # 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
        ],
    }
    

    注意:

    如果一个视图类在有全局配置下,还进行了局部配置,优先走自己的局部配置。

    核心:

    可以全局和局部配置视图类支持的结果渲染:默认可以json和页面渲染,学习该模块的目的是开发可以全局只配置json方式渲染。

  • 相关阅读:
    第1周作业
    第0次作业
    第三周作业
    随笔1
    第一次作业
    第二周作业
    第零次作业
    第四周作业
    第三周作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/fxyadela/p/11892035.html
Copyright © 2011-2022 走看看