0

在 Python 中使用 jsonrpclib 实现一些 API 后,我需要将它们迁移到 Django 框架项目中。我是 Django 和 Piston/tastypie 的新手,但在我的 Python 应用程序中使用 jsonrpc/xmlrpc 库有一些经验。

到目前为止,我已经开发了一些模块,将一个 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/”之类的请求映射到特定的处理程序。
  • 在 api 应用程序中添加 handler.py,扩展 Piston/Tastypie 的 BaseHandler。

所以我想知道它是否是使用 Django 和 API 的正确方法,当我创建扩展 BaseHandler 的 Handler 实例时,在 handler.py 中创建我的 ServiceClass 实例(初始化数据,提供方法)。这个 Handler 类是否在服务器启动时实例化一次?如果我的 ServiceClass 依赖某个模型从中加载数据怎么办?

我想避免框架在每次新请求到达 /api/ 应用程序时实例化我的类。

我很高兴听到任何建议,谢谢,

4

1 回答 1

1

专门针对活塞...您不应该真正使用处理程序的实例。它更像是您使用类属性设置的元类。这些属性控制处理程序将绑定到哪个模型(如果有)。以及它应该显示哪些字段或它支持哪些方法。

通常,请求输入您的一种方法,然后您可以根据需要处理请求,作为隔离状态。如果它需要使用共享资源或使用模型进行查询,那部分取决于你,从一些导入的资源中共享。您说您需要一个模型,这就是为什么您将其作为类属性绑定到处理程序然后对其进行查询的原因。您不应该真正将状态存储在处理程序上。

于 2012-03-07T17:09:17.043 回答