【问题标题】:Django Rest Framework: Output in JSON to the browser by defaultDjango Rest Framework:默认以 JSON 格式输出到浏览器
【发布时间】:2018-01-11 22:20:52
【问题描述】:

我不想在 URL 中写 ?format=JSON。默认情况下它应该返回 JSON 格式为djangorestframework

【问题讨论】:

    标签: json django api django-rest-framework


    【解决方案1】:

    @Devasish 为所有视图提供默认值,但您也可以设置用于单个视图或视图集的渲染器,如下面的 the DRF doco 示例所示:

    APIView class-based views.
    
    from django.contrib.auth.models import User
    from rest_framework.renderers import JSONRenderer
    from rest_framework.response import Response
    from rest_framework.views import APIView
    
    class UserCountView(APIView):
        """
        A view that returns the count of active users in JSON.
        """
        renderer_classes = [JSONRenderer]
    
        def get(self, request, format=None):
            user_count = User.objects.filter(active=True).count()
            content = {'user_count': user_count}
            return Response(content)
    

    【讨论】:

      【解决方案2】:

      rest-framework 的可浏览 API 是一个 json。没必要写

      ?format=JSON

      在url中,只是UI

      如果你 curl api 根目录:

      curl -I http://drf-demo.herokuapp.com/api/universities/
      HTTP/1.1 200 OK
      Connection: keep-alive
      Server: gunicorn/19.4.5
      Date: Fri, 04 Aug 2017 08:12:52 GMT
      Transfer-Encoding: chunked
      Vary: Accept, Cookie
      X-Frame-Options: SAMEORIGIN
      Allow: GET, POST, HEAD, OPTIONS
      Content-Type: application/json
      Via: 1.1 vegur
      

      【讨论】:

        【解决方案3】:

        settings.py处需要添加如下设置..

        REST_FRAMEWORK = {
            'DEFAULT_RENDERER_CLASSES': (
                'rest_framework.renderers.JSONRenderer',
            ),
            'DEFAULT_PARSER_CLASSES': (
                'rest_framework.parsers.JSONParser',
            )
        }
        

        更多详情请访问:http://www.django-rest-framework.org/api-guide/settings/

        【讨论】:

          猜你喜欢
          • 2012-01-28
          • 2013-12-27
          • 2014-06-07
          • 2017-06-22
          • 2015-06-09
          • 2020-05-05
          • 2014-08-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多