【问题标题】:Get 404 error when using tastypie filtering使用美味派过滤时出现 404 错误
【发布时间】:2013-03-28 14:23:46
【问题描述】:

我正在尝试使用 sweetpie 过滤,但是当我尝试通过过滤获取资源时收到 404。

代码

class UserResource(ModelResource):
   class Meta:
       queryset = UsersCouchDb.objects.all()
       resource_name = 'users/list'
       fields = ['firstName', 'lastName', 'gender','status','date']
       always_return_data = True
       authorization= Authorization()
       filtering = {
           "firstName": ('exact', 'startswith'),
       }

我正在使用urlopen 访问资源:

    info= urllib2.urlopen('http://127.0.0.1:8000/api/users/list/&firstName__exact=David').read()

如何做到这一点,以便在尝试通过 Tastypie 过滤获取资源时不会收到 404?

【问题讨论】:

  • 几个问题:该 URL 存在吗?在 &firstname 之前有 ?format=json 吗?
  • 如果没有结果,TastyPie 只会发回带有零元素的 json(但会有元数据);所以我的猜测是你有一些设置不正确。你设置注册那些资源了吗?您是否为他们设置了 URL?
  • @GeorgeStocker,我设置了正确的 url,因为我可以做 '127.0.0.1:8000/api/users/list/?format=json' 返回一个正确的列表。但是当我使用 urlopen 时,我不需要附加 '?format=json'...
  • @GeorgeStocker 格式为 '127.0.0.1:8000/api/users/list/?format=json&firstName=David' 可以,谢谢...
  • 那么你的问题解决了吗?

标签: python django rest tastypie


【解决方案1】:

如果您查询的列表中没有结果,TastyPie 只会发回零元素的 Json(如下所示):

{
    meta: {
        limit: 20,
        next: null,
        offset: 0,
        previous: null,
        total_count: 0
    },
}

因此,如果您收到 404,您似乎没有正确设置某些内容。

以下事项可以解决您的问题:

  • 确保在& 之前将?format=json 附加到您的网址中
  • 确保您已注册 APIResource
  • 如果有任何不同,请确保您已设置适当的 urls.py。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 2011-10-24
    • 2013-06-01
    • 2014-03-15
    • 2014-04-18
    • 1970-01-01
    • 2015-03-21
    • 2012-12-17
    相关资源
    最近更新 更多