3

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"),
        ]

これは私の URL ファイルです。

v1_api = Api(api_name='v1')
v1_api.register(userResource())

これは利用可能なすべての URL です。

^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'] 

このURLを呼び出す代わりに探しているもの

http://myDomain.com:8000/api/v1/users/1/?format=json

ユーザー名に基づいて呼び出したい

http://myDomain.com:8000/api/v1/users/myUserName/?format=json

4

1 に答える 1

4

TastyPie のどのバージョンを使用していますか? 0.9.11 ではoverride_urls0.9.12 (ベータ版) が導入されprepend_urls、クックブックは 2 つのバージョンで異なります。まだ 0.9.11 を使用している可能性があります。

参照: http://django-tastypie.readthedocs.org/en/v0.9.11/cookbook.html#using-non-pk-data-for-your-urls

于 2012-07-28T02:55:24.293 に答える