Один из способов - катиться самостоятельно или использовать django-поршень, который превосходен.Но проблема, с которой я сталкиваюсь с поршнем, заключается в том, что это своего рода сделано для присоединения к существующему django-проекту для добавления API.Он не столько создан для создания ресурсно-ориентированного API с поддержкой форматов, включая HTML.
Я вижу пример использования Piston: у вас есть полноценный веб-сайт, который обслуживает HTML-контент, но затем выприкрепил бы api к этому в url / api / *.Затем вы идете и добавляете к нему поршень.С этим сценарием использования Piston великолепен, нет необходимости переписывать существующий код, и вы получаете все, что вам нужно.Может случиться так, что Piston работает хорошо, не отделяя API от пользователя, обращенного к части сайта, но я этого не пробовал.
Проще попытаться объяснить это на некоторых примерах:
Bitbucket
Github
Битбакет создан с использованием Django и django-pneon для API, аGithub сделан с Ruby On Rails, который имеет встроенную поддержку ресурсов с различными форматами.Я не говорю, что вы должны переключиться на RoR, потому что мы все любим Джанго, и я не говорю, что вы не можете сделать это с Джанго, но было бы утомительно делать это самостоятельно при каждом просмотре.
Итак, мы с коллегой решили, что мы хотим немного «магии» RoR в Django, но мы не хотели, чтобы это было волшебно, а делали нашу жизнь проще, не абстрагируя все.Так что jgorset писал Respite , который представляет собой небольшой фреймворк Django для создания "RESTful" API таким же образом, что и RoR, но в Django.Он все еще находится на ранней стадии разработки, но мы ежедневно используем его в наших рабочих проектах, и он очень настраиваемый, как и сам Django.Он пытается упростить создание ресурс-ориентированных веб-страниц и структурировать ваш код, не мешая вам.
Поэтому, естественно, я бы посоветовал взглянуть и попробовать Respite: https://github.com/jgorset/django-respite/