django tastypie过滤器返回使用format = json

时间:2013-07-13 05:52:25

标签: django filter tastypie

我在使用tastypie过滤方面遇到了麻烦,我在文档中注意了什么,但我总是收到消息:

  

抱歉,尚未实施。请将“?format = json”附加到您的网址。

我不确定我是否遗漏了一些东西: 这是我的ModelResource类下的最新消息:

class RequestResource(ModelResource):
class Meta:
    queryset = Request.objects.all()
    resource_name = 'requests'
    excludes = ['done_on', 'requested', 'is_done', 'id']
    allowed_methods = ['get', 'post']
    filtering = {
        'origin': ALL,
        'destination': ALL,
    }

我一直在关注文档。当我输入网址时仍然没有结果:

  

本地主机:8000 / API / V1 /请求/ origin__exact =样品

你可以指出我做错了吗?

2 个答案:

答案 0 :(得分:2)

只需设置属性TASTYPIE_DEFAULT_FORMATS

即可

TASTYPIE_DEFAULT_FORMATS = ['json']

如文档tastypie-default-formats

中所述

答案 1 :(得分:0)

您只需要告诉tastypie您想要数据的格式.HTTP客户端使用Accept标头告诉Web服务器它期望的数据类型。

例如,我的浏览器会发送以下Accept标题:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

这里的问题是tastypie只会实现application/jsonapplication/xml以及HATEOAS使用的任何内容。如果tastypie在您的Accept标题中找不到任何这些内容,则会显示您描述的错误。

您可以使用get参数format来覆盖它:

localhost:8000/api/v1/requests/?origin__exact=sample&format=json