Django-rest-framework:设置默认渲染器不起作用?

Ric*_*ard 6 python django django-rest-framework

我正在尝试构建一个默认输出 JSON 的 Django-rest-framework REST API,但也有 XML 可用。

我已阅读有关默认排序的文档部分渲染器章节,并将其放入我的设置文件中:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework_xml.renderers.XMLRenderer',
    )
}
Run Code Online (Sandbox Code Playgroud)

但是,默认情况下会输出 XML。切换顺序没有区别。

如果我附加format=json到 URL 并且XMLRenderer完全删除该行,我确实会得到 JSON 。

如何将 JSON 设置为默认值?

我正在使用 Django 的 v1.7 和 Django-rest-framework 的 v3.1.1。

更新:根据这里的要求是我的观点的代码:

class CountyViewSet(viewsets.ModelViewSet):
    queryset = County.objects.all()
    serializer_class = CountySerializer
Run Code Online (Sandbox Code Playgroud)

和序列化器:

from rest_framework import serializers
class CountySerializer(serializers.ModelSerializer):
    class Meta:
        model = County
        fields = ('id', 'name', 'name_slug', 'ordering')
Run Code Online (Sandbox Code Playgroud)

然后最后从我的 urls 文件:

router = routers.DefaultRouter()
router.register(r'county', CountyViewSet)
urlpatterns = [
    url(r'^', include(router.urls)),
]
Run Code Online (Sandbox Code Playgroud)

mis*_*bah 0

您可以发布实际视图的代码吗?

renderer_classes在你的观点中定义过吗?因为这会覆盖默认设置。

class YourView(APIView):
    renderer_classes = (XMLRenderer, JSONRenderer, )
Run Code Online (Sandbox Code Playgroud)