Правильный способ инициализации внутренних данных для API в Django с помощью Piston / Django-tastypie vs jsonrpc - PullRequest
0 голосов
/ 07 марта 2012

После некоторых реализаций API, использующих jsonrpclib в Python, мне нужно перенести их в проект Django Framework.Я новичок в Django и Piston / tastypie, но у меня есть некоторый опыт использования библиотек jsonrpc / xmlrpc в моих приложениях Python.

До сих пор я разработал несколько модулей с ServiceClass, прикрепленным к регистру сервера jsonrpc, который обрабатывает запрос и вызывает методы в ServiceClass.

Когда класс присоединен к региструсоздается новый экземпляр ServiceClass, который загружает все исходные данные и сохраняет их в памяти, поэтому каждый метод, вызываемый через jsonrpc, может иметь доступ к внутренним значениям в этом экземпляре.

Теперь я пытаюсь сделать то же самое в Django с Piston или Tastypie.Я перешел по этой ссылке http://www.robertshady.com/content/creating-very-basic-api-using-python-django-and-piston и другим ресурсам, и вся документация, которую я прочитал, ясна и показывает правильный способ работы с ней:

  • Измените url.py для сопоставления запросов как "/ api / "для конкретного обработчика.
  • Добавьте handler.py в приложение api, расширяя BaseHandler для Piston / Tastypie.

Так что мне интересно, правильный ли это способ работы с Django и API, чтобысоздайте экземпляр моего ServiceClass (инициализируйте данные, предоставьте методы) внутри handler.py, когда я создаю экземпляр обработчика, расширяющего BaseHandler.Этот класс Handler создается один раз при запуске сервера?Что если мой ServiceClass использует какую-либо модель для загрузки данных из нее?

Я хочу, чтобы среда не создавала экземпляр моего класса каждый раз, когда в / api / приложение поступает новый запрос.

Я буду рад услышать о любой рекомендации, Спасибо,

1 Ответ

1 голос
/ 07 марта 2012

Специально для поршня ... Вы не должны действительно использовать обработчик с точки зрения экземпляра.Это больше похоже на метакласс, который вы устанавливаете с атрибутами класса.Эти атрибуты определяют, к какой модели будет привязан обработчик, если таковой имеется.И какие поля он должен показывать или какие методы он поддерживает.

Как правило, запрос вводится одним из ваших методов, и затем вы обрабатываете запрос, как хотите, как изолированное состояние.Если ему нужно использовать общий ресурс или использовать модель для запросов, эта часть остается за вами, будучи разделенной с каким-либо импортированным ресурсом.Вы сказали, что вам нужна модель, поэтому вы должны связать ее с обработчиком как атрибут класса, а затем запросить ее.Вы не должны действительно хранить состояние на обработчике.

...