2009-06-30 49 views
2

我正在将MetaWeblog API支持添加到Django CMS,并且我不太确定如何对应用程序进行分层。将API添加到Django应用程序的最佳方式是什么?

我正在使用django_xmlrpc,它允许我映射到每个请求的参数化函数。这只是我从服务函数(AddPage,EditPage等)调用django应用程序的级别的一种情况。

对于django-page-cms,我假设有很多django应用程序,业务逻辑和验证包含在表单中。在这种情况下,有PageForm(forms.ModelForm)和PageAdmin(ModelAdmin),它们都包含很多逻辑和验证。

如果我要构建一个允许维护页面和内容的API,这是否意味着我应该以编程方式创建并填充PageAdmin实例?然后捕捉任何异常,并转换到他们的API等价?或者这是一个坏主意 - 滥用什么形式的目的?

另一种选择是重构代码,以便业务和逻辑不在表单类之外。然后我会有形式和api,都要通过单独的业务逻辑。

其他选择?

什么是最好的解决方案?

回答

2

Web服务API只是更多的URL。

这些WS API URL的映射来查看函数。

WS视图函数处理GET和POST(以及可能的PUT和DELETE)。

WS视图函数使用表单以及模型来使事情发生。

它就像一个管理界面。除此之外,没有HTML。

WS视图函数使用JSON消息或XML消息进行响应。

+0

我已经启动并运行了Web服务。它是我应用程序中的哪个级别的案例。 因此,对于我的服务函数AddPage(),例如,您将生成管理窗体编程方式填充它并保存? – 2009-06-30 16:12:48

0

看来python并没有提供这种开箱即用的功能。但有一个叫做abc模块的东西:

我引自http://www.doughellmann.com/PyMOTW/abc/“通过定义一个抽象基类,你可以为一组子类定义一个公共的API,这个功能在第三方去的情况下特别有用提供实现......“=> API的目标,定义合同。

相关问题