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プラクティスを使用して、「レシピ」リソースと「スパイス」リソースを別々に分割することをお勧めします。レシピに含まれるスパイスに基づいてレシピをフィルタリングする必要がある場合は、「スパイス」をベースURLの一部ではなく、GETパラメーターとして渡す必要があります。お役に立てば幸いです。

于 2012-03-04T21:46:21.400 に答える