Django 之 rest_framework 响应器使用

Django 之 rest_framework 响应器使用

使用部分:

  • 第一步:导入模块

    from rest_framework.renders import 	BrowsableAPIRenderer,JSONRenderer,TemplateHTMLRenderer,StaticHTMLRenderer,HTMLFormRenderer
    
    # JSONRenderer  # JSON数据样式响应--->常用
    # BrowsableAPIRenderer  # 浏览器接口响应--->常用
    # TemplateHTMLRenderer  # 静态HTML响应
    # StaticHTMLRenderer  # 标准 HTML 响应
    # HTMLFormRenderer  # HTML 表单响应
    
  • 第二步: 配置响应器

    • 局部配置(在视图类中 配置)

      from rest_framework.parsers import JSONParser, FormParser, MultiPartParser, FileUploadParser
      from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer
      
      
      class BooksView(ModelViewSet):
          # 局部使用 版本控制  URLPathVersioning
          # versioning_class = URLPathVersioning
          
          # 局部 解析器配置
          parser_classes = [JSONParser, ]
          
          # 局部配置 响应器
          renderer_classes = [JSONRenderer, BrowsableAPIRenderer]
          
          # 获取 queryset对象
          queryset = models.Book.objects.all()
          
          # 获取 序列化类
          serializer_class = myser.BookSerializer
          
          def list(self, request, *args, **kwargs):
              print(1)
              print(request.version)
              print(request.__dict__)
              
              return super().list(request, *args, **kwargs)
      
    • 全局配置(一般都是全局配置即可)

      REST_FRAMEWORK = {
          
          # 配置全局版本控制
          'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning',
          'DEFAULT_VERSION': 'v1',  # 默认版本(从request对象里取不到,显示的默认值)
          'ALLOWED_VERSIONS': ['v1', 'v2'],  # 允许的版本
          'VERSION_PARAM': 'version',  # URL中获取值的key
          
          # 配置全局解释器
          'DEFAULT_PARSER_CLASSES': [
              'rest_framework.parsers.JSONParser',
              'rest_framework.parsers.FormParser',
              'rest_framework.parsers.MultiPartParser',
          ],
          # 配置全局响应器
          'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer']
          
      }
      
原文地址:https://www.cnblogs.com/qianzhengkai/p/11144414.html