我在Tastypie Cookbook尝试了这个例子。
添加此代码以从用户名而不是ID访问用户资源。
#myapp/api/resources.py
class UserResource(ModelResource):
class Meta:
queryset = User.objects.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"),
]
这是我的网址文件
v1_api = Api(api_name='v1')
v1_api.register(userResource())
这是所有可用的网址,
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/$ [name='api_dispatch_list']
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/schema/$ [name='api_get_schema']
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/set/(?P<pk_list>\w[\w/;-]*)/$ [name='api_get_multiple']
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/(?P<pk>\w[\w/-]*)/$ [name='api_dispatch_detail']
我在找什么而不是叫这个网址
http://myDomain.com:8000/api/v1/users/1/?format=json
我想根据用户名
拨打电话http://myDomain.com:8000/api/v1/users/myUserName/?format=json
答案 0 :(得分:4)
您使用的是哪种版本的tastypie? 0.9.11使用override_urls
而0.9.12(beta)引入prepend_urls
,两个版本的食谱不同。你有可能还在使用0.9.11。
请参阅: http://django-tastypie.readthedocs.org/en/v0.9.11/cookbook.html#using-non-pk-data-for-your-urls