有没有办法使用resource_name
创建tastypie中的资源层次结构,其行为类似于常规django网址?我的目标是看起来像这样的tastypie网址:<app_name>/<module_name>/<functionality>
,但我遇到了麻烦。
我使用以下resource_name
创建了资源:
库/书籍
图书馆/书籍/架
库/书籍/循环
(请注意,父资源library/book
没有尾部斜杠)
在这种情况下,我可以很好地访问父资源。但是,在尝试访问其中一个子资源时(例如/api/v1/library/books/circulation
),我收到以下错误:
提供的资源查找数据无效(类型不匹配)。
另一方面,当我将父级resource_name
定义为library/books/
(带有斜杠)时,子资源恢复正常 - 但父资源本身返回404错误。
如果我使用下划线(resource_name
,library_books
)格式化library_books_circulation
,那么一切都很好 - 但是他们真的丑陋... < / p>
我正在运行Python 2.7.3,使用Django 1.6和Tastypie 0.10.0。
答案 0 :(得分:1)
虽然我不确定使用带有斜杠的resource_name的方法总是适合您,但为了解决您的问题,您只需更改URL注册的顺序。
注册网址时,最后注册名为“library / books”的资源。 您遇到问题的原因是“图书馆/书籍/书架”被作为带有“架子”的pk的书来捕获。如果资源“library / books / shelf”的url模式将首先出现,那么在尝试解析library / books / pk之前,它们将被Django捕获。