如何从django-tastypie中的URI获取Resource对象?

时间:2015-12-01 05:20:14

标签: python django tastypie

假设我有一些ModelResource类,并且他们使用tastypie API端点注册(比如api / v1 / posts,api / v1 / authors)。

给定一个URI(例如api / v1 / posts),我需要获取一个PostResource实例,以便执行PostResource.get_list()

class PostResource(ModelResource):
    def get_list(self, *args, **kwargs):
        ...
class AuthorResource(ModelResource):
    def get_list(self, *args, **kwargs):
        ...

问题 - 给定网址api/v1/posts,获取PostResource实例的pythonic / django / tastypie方式是什么?

我仍然可以在我的代码中保持反向映射,这样可行,但肯定会有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

查看get_via_uri函数。

你可能需要这个部分:

from django.core.urlresolvers import resolve, get_script_prefix, Resolver404
from tastypie.exceptions import NotFound

prefix = get_script_prefix()
chomped_uri = uri

if prefix and chomped_uri.startswith(prefix):
    chomped_uri = chomped_uri[len(prefix)-1:]

try:
    resource, args, kwargs = resolve(chomped_uri)
except Resolver404:
    raise NotFound("The URL provided '%s' was not a link to a valid resource." % uri)

uri是您的URIresource是您的资源实例。