4

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

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

我不知道该怎么做。当我按照 Tastypi 说明进行设置时,我的 URL 将如下所示:

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

如果我将 spice 的 resource_name 更改为“/recipe/spice”,则会收到“ NotFound: Invalid resource lookup data provided (mismatched type) ”错误。

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

4

1 回答 1

4

Tastypie 旨在帮助实现 REST API,因此默认情况下仅支持符合 REST 实践的 URL。也就是说,每个 URL 都应该包含一个资源名称(“recipe”或“spice”)和可选的该资源的标识符(“ID”)。这之外的任何事情都违反了 REST 实践,如果您没有实现 REST API,您可能需要重新考虑是否应该使用 Tastypie。

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

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

于 2012-03-04T21:46:21.400 回答