2012-03-04 48 views
4

我想使用Tastypie創建一個URL層次結構,但我遇到了一些錯誤。以下是我希望層次結構起作用的方式:Django-tastypie創建一個URL層次結構

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

我找不到如何執行此操作。當我設置了以下的Tastypi說明我的網址會是這樣的:

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

如果我改變RESOURCE_NAME的香料「/食譜/香料」然後我得到一個「NOTFOUND:無效的資源查找提供的數據(不匹配類型)「錯誤。

關於我能做什麼的任何建議?

回答

4

Tastypie旨在幫助實現REST API,因此默認情況下僅支持符合REST實踐的URL。也就是說,每個URL應該包含一個資源名稱('recipe'或'spice')以及可選的資源標識符('ID')。除此之外的任何事情都會違反REST實踐,如果您沒有實現REST API,您可能需要重新考慮是否應該使用Tastypie。

這就是說,Tastypie確實提供了一大堆用於定製事物的鉤子。對於自定義網址,您需要定義方法override_urls以將某些網址映射到自定義視圖,並在將其發送到常規調度程序之前進行一些預處理。

如果可能的話,我建議只使用標準的REST實踐並將其分解爲獨立的'recipe'和'spice'資源。如果您需要基於其中的香料過濾配方,則應將「香料」作爲GET參數傳入,而不是基本URL的一部分。希望有所幫助。

+0

謝謝。對它進行了一些更多的研究,現在有意義。我會堅持以這種寧靜的方式。 – tabdon 2012-03-08 14:35:59