Django-tastypie создание URL-иерархии - PullRequest
4 голосов
/ 05 марта 2012

Я хотел бы создать иерархию URL-адресов с использованием Tastypie, но сталкиваюсь с некоторыми ошибками. Вот как я хотел бы, чтобы иерархия работала:

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

Я не могу узнать, как это сделать. Когда я настрою это, следуя инструкциям Tastypi, мои URL будут такими:

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

Если я изменю имя_ресурса для специи на «/ recipe / spice», то получу « NotFound: предоставлены неверные данные для поиска ресурса (несоответствующий тип) ».

Любые предложения о том, что я мог бы сделать?

1 Ответ

4 голосов
/ 05 марта 2012

Tastypie предназначен для помощи в реализации REST API и, таким образом, по умолчанию поддерживает только URL-адреса, соответствующие методам REST. А именно, каждый URL должен содержать имя ресурса («рецепт» или «специя») и, опционально, идентификатор этого ресурса («идентификатор»). Все, что выходит за рамки этого, противоречит методам REST, и если вы не реализуете API REST, вы можете пересмотреть вопрос о том, следует ли использовать Tastypie.

Как говорится, Tastypie предоставляет массу крючков для настройки вещей. Для пользовательских URL-адресов вы должны определить метод override_urls , чтобы сопоставить определенные URL-адреса с пользовательскими представлениями и выполнить некоторую предварительную обработку перед отправкой его обычным диспетчерам.

Если возможно, я бы порекомендовал просто использовать стандартные практики REST и разбить их на отдельные ресурсы «рецепт» и «специя». Если вам нужно отфильтровать рецепты, основанные на специях, которые в них содержатся, «специи» должны передаваться как параметр GET, а не как часть базового URL. Надеюсь, это поможет.

...