Django Tastypie:默认输出JSON,但也支持其他格式?

时间:2015-04-04 15:10:16

标签: django tastypie

我正在将现有的API从Django Piston迁移到Django Tastypie。我正在使用Django 1.7。

现有API默认输出JSON,但如果?format=xml附加到URL,则支持XML查询。

我发现很难弄清楚如何在Tastypie中复制它。有a very similar question here,但所有答案只解释了如何完全禁用除JSON之外的所有其他格式。所以我想知道它是否真的可以在Tastypie中做到这一点。

如果我在我的设置文件中执行此操作:

TASTYPIE_DEFAULT_FORMATS = ['json']

JSON成为默认值,但我无法使用?format=xml参数输出XML,因为XML已被禁用。

同样,如果我向资源添加determine_format方法。

是否可以将JSON指定为默认格式,还允许使用XML?

1 个答案:

答案 0 :(得分:0)

您可以将Determ_format的默认格式覆盖为JSON。它也适用于其他格式。

class MyAppResource(ModelResource):
    """It is inheriting Model Resources of tastypie"""

    def determine_format(self, request):
        """
        return application/json as the default format
        """
        fmt = determine_format(request, self._meta.serializer,\
                               default_format=self._meta.default_format)
        if fmt == 'text/html' and 'format' not in request:
            fmt = 'application/json'
        return fmt

现在,而不是Base作为ModelResource使用MyAppResource作为您的资源类。