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 端点以进行身份验证