Право, мне трудно понять это,
В моей локальной среде я интегрировал поиск имени пользователя для объекта пользователя django:
class UserResource(ModelResource):
class Meta:
queryset = User.objects.all()
excludes = ['password', 'email', 'is_staff', 'is_active', 'is_superuser']
resource_name = 'users'
include_resource_uri = False
filtering = {
'username': ALL
}
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<username>[\w\d_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
]
В источнике deliciouspie, resources.py, я добавил два оператора печати в строке 1800+.
def obj_get(self, request=None, **kwargs):
"""
A ORM-specific implementation of ``obj_get``.
Takes optional ``kwargs``, which are used to narrow the query to find
the instance.
"""
try:
print "1, ", kwargs
base_object_list = self.get_object_list(request).filter(**kwargs)
print "2, ", base_object_list
# etcetera
Посещение:
/api/v1/users/foo/?format=json
это печатает:
1, {'username': foo'}
2, [<User: foo>]
1, {'id': 1}
2, [<User: foo>]
И возвращает правильный объект JSON.
Однако на моем удаленном (dev) сервере у меня точно такая же настройка (я дважды проверил все файлы), единственная разница кажется в том, что на нем запущено яйцо deliciouspie python 2.7 вместо 2.6, в любом случае я получаю этот принт:
1, {'pk': u'foo'}
[27/Jul/2012 10:48:37] "GET /api/v1/users/foo/?format=json HTTP/1.0" 404 1219
Я также получаю эту трассировку стека:
{
error_message: "Invalid resource lookup data provided (mismatched type).",
traceback: "Traceback (most recent call last):
File "...path.../resources.py", line 192, in wrapper
response = callback(request, *args, **kwargs)
File "...path.../resources.py", line 406, in dispatch_detail
return self.dispatch('detail', request, **kwargs)
File "...path.../resources.py", line 427, in dispatch
response = method(request, **kwargs)
File "...path.../resources.py", line 1051, in get_detail
obj = self.cached_obj_get(request=request, **self.remove_api_resource_names(kwargs))
File "...path.../resources.py", line 921, in cached_obj_get
bundle = self.obj_get(request=request, **kwargs)
File "/...path.../resources.py", line 1765, in obj_get
raise NotFound("Invalid resource lookup data provided (mismatched type).")
NotFound: Invalid resource lookup data provided (mismatched type).
"
}
Какие-нибудь мысли?