Django Rest Framework:默认以 JSON 格式输出到浏览器

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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/

【讨论】:

以上是关于Django Rest Framework:默认以 JSON 格式输出到浏览器的主要内容,如果未能解决你的问题,请参考以下文章

在 django-rest-framework-jwt 中存储超过默认信息

Django REST Framework 序列化程序字段必需=false

如何使用 Django-oauth-toolkit 使用 Django-rest-framework 测试 API 端点以进行身份​​验证

Django REST Framework 发出异步请求以响应

django rest framework自定义返回格式

Django REST Framework:如何在 URL 中添加前缀以进行版本控制