0

別の API を読み取り、別の形式で表示する django-piston API を作成しようとしています (XML のみの API を読み取り、JSON で表示します)。しかし、私がやっている方法は空の文字列であるため、問題が発生しています。

ここに私のハンドラがあります:

class MyHandler(BaseHandler):
methods_allowed = ('GET')

def read(self, request, my_argument):

    my_node = get_node(my_argument)
    return my_node

get_node 関数は、他の API からオブジェクトを取得する単なる関数であり、lxml オブジェクトです。

In [27]: type(my_node)
Out[27]: <type 'lxml.objectify.ObjectifiedElement'>

私の urls.py には次のものがあります。

from django.conf.urls.defaults import *
from piston.resource import Resource
from api.handlers import MyHandler

class CsrfExemptResource( Resource ):
    def __init__( self, handler, authentication = None ):
        super( CsrfExemptResource, self ).__init__( handler, authentication )
        self.csrf_exempt = getattr( self.handler, 'csrf_exempt', True )

my_resource = CsrfExemptResource( MyHandler )

urlpatterns = patterns( '',
    url( r'^api/(?P<my_argument>.*)/$', my_resource ),
)

そして、その URL にアクセスすると (get_node に直接与えられた適切な引数を使用して、正しいオブジェクトが得られます)、空の文字列が返されます。

それを機能させる方法は?

4

1 に答える 1

1

その lxml.objectify.ObjectifiedElement から何が必要かによって異なります。その要素からテキストコンテンツを取得したい場合は、次の方法でアクセスできます

my_node.text

属性値が必要な場合は、次の方法でアクセスできます。

my_node.attrib['nameofattribute']
于 2011-04-12T13:37:59.707 に答える