在模版响应返回给客户端之前,必须被渲染。渲染进程将模板和正文之间中间内容渲染成客户端能够接受的二进制流
1.如何决定使用什么渲染器
渲染器通常和解析器一样由一系列类列表组成
一般检查请求头,另外就是路由后缀( http://example.com/api/users_count.json)
2.设置渲染器
通过settings文件设置
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
)
}
单一APIView
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)
使用装饰器
@api_view(['GET'])
@renderer_classes((JSONRenderer,))
def user_count_view(request, format=None):
"""
A view that returns the count of active users in JSON.
"""
user_count = User.objects.filter(active=True).count()
content = {
'user_count': user_count}
return Response(content)
3.渲染器顺序
请求中如果没有指定接受的渲染器类型(Accept),默认使用renderer_classes中的第一个渲染器进行解析
如果你的接口包含的视图函数既能提供正常的网页访问,又能作为API接口返回响应对象,那么你应该考虑使用TemplateHTMLRenderer作为默认renderer.
4.渲染器指南
JSONRenderer
以utf-8进行编码,返回JSON数据
默认风格包含unicode字符, 返回的数据十分紧凑,没有不必要的空格。如果想要缩进,可以在请求的时候设置‘intent’参数,如Accept: application/json; indent=4,如
{
"unicode black star": "★",
"value":