我正在将现有的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?
答案 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作为您的资源类。