python - Spyne/RPClib - 如何响应 ComplexModel?

标签 python django soap wsdl xmlrpclib

我正在使用SPYNE这是第一次,我对如何用我的 ComplexModel 做出响应有点困惑。

#service.py
class Status(ComplexModel):
    statusCode = Integer
    statusMsg = String

class ResponseData(ComplexModel):
    status = Array(Status)
    version = Integer

class SoapService(ServiceBase):
    @rpc(String, _returns=ResponseData)
    def doSomething(ctx, name):
        # ...
        # do something to get a django-model-object
        obj_data = Servers.objects.get(host=name)
        # put vars from the django-model-object into 'ResponseData' and nested 'Status'
        # e.g. statusCode = 1, statusMsg = 'online', version = 1

        """ experimental - status is not returned - version is 1:
        obj_status = Status()
        obj_status.statusCode = 1
        obj_status.statusMsg = 'online'

        retval = ResponseData()
        retval.status = obj_status
        retval.version = 1
        """
        return retval

有人知道如何填充复杂模型吗? docsexamples帮不了我。

最佳答案

我已经找到解决办法了。这是一个小演示。

#service.py
class Status(ComplexModel):
    statusCode = Integer
    statusMsg = String

class ResponseData(ComplexModel):
    status = Array(Status)
    version = Integer

class SoapService(ServiceBase):
    @rpc(String, _returns=ResponseData)
    def doSomething(ctx, name):

        obj_data = Servers.objects.get(host=name)
        if obj_data.status:
            my_statusCode = 1
            my_statusMsg = 'online'
        else:
            my_statusCode = 0
            my_statusMsg = 'offline'

        retval = ResponseData()
        retval.status = [{'statusCode': my_statusCode, 'statusMsg': my_statusMsg}]
        retval.version = 1
        return retval

关于python - Spyne/RPClib - 如何响应 ComplexModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461577/

相关文章:

python - 如何检查变量是否是神社中的字典

Django、ReportLab PDF 生成附加在电子邮件中

python - 使用wing IDE时如何设置python的运行参数?

python - select_related : ' ' . 中给出的非关系字段选项是:(无)

python - 尝试从正则表达式生成 pandas 数据框列时出现问题?

编写许多 try/except 子句的 Pythonic 方式?

ruby-on-rails - 在 Ruby on Rails 中使用 Savon 的 SOAP 调用在信封和主要操作周围变得奇怪

ssl - 如何将 keystore 与 SAAJ SOAP 调用相关联

java - 当 SoapAction 丢失时,.NET 2.0 Web 服务可以处理来自客户端的调用吗?

python - tkinter 帮助 : difference between "master" and "root" keywords in this code?