【发布时间】:2018-10-19 00:08:21
【问题描述】:
我已经阅读了这个问题How to generate JSON-API data attribute vs results attribute in Django Rest Framework JSON API?,但接受的答案对我不起作用,而且我有一个没有涵盖的情况。
我正在使用 Django Rest Framework (3.5.3) 来提供 API 端点。该端点基于
class FruitTestReadOnlyViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Fruit.objects.all()
serializer_class = FruitSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
从那里返回的数据很好,只是它具有“结果”属性而不是“数据”属性。
我上面提到的question建议你这样做
class FruitTestReadOnlyViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Fruit.objects.all()
serializer_class = FruitSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
renderer_classes = (JSONRenderer,)
parser_classes = (JSONParser,)
但这对我来说没有什么区别,事实上我已经有了全局设置,我相信它涵盖了像这样的渲染和解析器方面
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'PAGE_SIZE': 10,
'EXCEPTION_HANDLER': 'rest_framework_json_api.exceptions.exception_handler',
'DEFAULT_PAGINATION_CLASS':
'rest_framework_json_api.pagination.PageNumberPagination',
'DEFAULT_PARSER_CLASSES': (
'rest_framework_json_api.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
),
'DEFAULT_RENDERER_CLASSES': (
'djangorestframework_camel_case.render.CamelCaseJSONRenderer',
'rest_framework_json_api.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DEFAULT_METADATA_CLASS': 'rest_framework_json_api.metadata.JSONAPIMetadata',
}
所以我很想知道最近是否有人这样做以及他们是如何做到的?
顺便说一句,我还有其他基于 ModelViewSet 的 API 端点,它们工作正常,并且提供“数据”属性而不是“结果”......这是其中之一的示例
class TreeViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Tree to be CRUDed.
"""
queryset = Tree.objects.all()
serializer_class = TreeSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
def get_queryset(self):
return Tree.objects.filter(username=self.request.user)
【问题讨论】:
标签: django django-rest-framework json-api