Django-tastypie创建URL层次结构

时间:2012-03-04 20:24:03

标签: django tastypie

我想使用Tastypie创建一个URL层次结构,但遇到了一些错误。以下是我希望层次结构起作用的方式:

/recipe  
/recipe/ID  
/recipe/ID/spice  
/recipe/ID/spice/ID

我无法知道如何做到这一点。当我按照Tastypi说明进行设置时,我的网址就像这样:

/recipe  
/recipe/ID  
/spice  
/spice/ID  

如果我将spice的resource_name更改为“/ recipe / spice”,那么我会收到“ NotFound:提供的资源查找数据无效(类型不匹配)”错误。

关于我能做什么的任何建议?

1 个答案:

答案 0 :(得分:4)

Tastypie旨在帮助实现REST API,因此默认情况下仅支持符合REST实践的URL。即,每个URL应包含资源名称('recipe'或'spice'),并且可选地包含该资源的标识符('ID')。除此之外的任何内容都会破坏REST实践,如果您没有实现REST API,您可能需要重新考虑是否应该使用Tastypie。

话虽如此,Tastypie确实为定制东西提供了大量的钩子。对于自定义网址,您需要定义方法override_urls,以便将某些网址映射到自定义视图,并在将其发送给常规调度程序之前进行一些预处理。

如果可能的话,我建议只使用标准的REST实践,并将其分解为单独的“配方”和“spice”资源。如果您需要根据其中的香料过滤食谱,'香料'应该作为GET参数而不是基本URL的一部分传递。希望有所帮助。