いくつかのチュートリアルに従って、Django を使用して小さな「Hello World」Web サービスを作成しようとしていますが、同じ障壁に何度もぶつかっています。view.py と soaplib_handler.py を定義しました。
ビュー.py:
from soaplib_handler import DjangoSoapApp, soapmethod, soap_types
class HelloWorldService(DjangoSoapApp):
__tns__ = 'http://saers.dk/soap/'
@soapmethod(_returns=soap_types.Array(soap_types.String))
def hello(self):
return "Hello World"
soaplib_handler.py:
from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod
from soaplib.serializers import primitive as soap_types
from django.http import HttpResponse
class DjangoSoapApp(SimpleWSGISoapApp):
def __call__(self, request):
django_response = HttpResponse()
def start_response(status, headers):
status, reason = status.split(' ', 1)
django_response.status_code = int(status)
for header, value in headers:
django_response[header] = value
response = super(SimpleWSGISoapApp, self).__call__(request.META, start_response)
django_response.content = "\n".join(response)
return django_response
そして、「response = super....」という行が問題を引き起こしているようです。url.py にマップされた /hello_world/services.wsdl を読み込むと、次のようになります。
/hello_world/service.wsdl の AttributeError 'module' オブジェクトに属性 'tostring' がありません
完全なエラー メッセージについては、こちらを参照してください: http://saers.dk:8000/hello_world/service.wsdl
このエラーが発生する理由について何か提案はありますか? ElementTree はどこで定義されていますか?