1

我目前正在使用带有 2 个应用程序的美味派。这些应用程序中的每一个都有一个名为 Group 的模型。它们的运作方式非常不同,唯一的相似之处是“集团”这个名称。

当只有一个或另一个应用程序添加到 urls 文件时,它就像一个魅力。但是,一旦我添加了这两个应用程序,就会出现名称冲突,并且 get_resource_uri() 方法返回错误的字符串。这是一些代码:

网址.py

from myapp1.resources import GroupResource as gr_a
from myapp2.resources import GroupResource as gr_b

myapp1_api = Api(api_name='1.0')
myapp1_api.register(gr_a())

myapp2_api = Api(api_name='1.0')
myapp2_api.register(gr_b())

在 sweetpie 存储库中当前 api.py 文件的第 37 行,我看到了以下代码:

if resource_name is None:
    raise ImproperlyConfigured("Resource %r must define a 'resource_name'." % resource)

 self._registry[resource_name] = resource

由于我的两个 Group 资源的 resource_name 为“group”,因此它们会相互注册,即使它们是在单独的 url 上注册的。除了更改实际资源名称之外,是否有解决此名称冲突的方法?

更新 uris 看起来像这样:

/myapp1/1.0/group/
/myapp2/1.0/group/

理想情况下,我不希望 myapp1 和 myapp2 相互了解(即 Group 类是不同的)。解决方法是将 myapp2.Group 更改为 myapp2.MyGroup (以避免名称冲突),但它确实不是那么优雅。

4

1 回答 1

0

在我所有的资源中,resource_name 都是空白的,因为我对默认名称很满意。我还想要一个网址,例如 /myapp/1.0/group/ 而不是 /myapp/1.0/myapp/group/

我现在所做的是将所有 resource_name 属性更改为“myapp/group”形式,并将它们全部绑定到一个空 url。这给了我一个很好的结果,例如:/1.0/myapp/group/,同时确保资源中没有名称冲突。

于 2012-06-21T18:12:13.663 回答