编程语言
首页 > 编程语言> > Python-好吃的人从非pk字段访问数据

Python-好吃的人从非pk字段访问数据

作者:互联网

我从Tastypie Cookbook开始尝试了该示例.

通过添加此代码以从用户名而非ID访问用户Resource.

 #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())

这是所有可用的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

解决方法:

您使用的是哪个版本的sweetpie? 0.9.11使用override_urls,而0.9.12(测试版)引入了prepend_urls,并且两个版本的菜谱有所不同.您可能仍在使用0.9.11.

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

标签:tastypie,web-services,python,django,resources
来源: https://codeday.me/bug/20191101/1980588.html