假设我有一些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方式是什么?
我仍然可以在我的代码中保持反向映射,这样可行,但肯定会有更好的解决方案。
答案 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
是您的URI
。 resource
是您的资源实例。