如何用django-piston读取lxml.objectify.ObjectifiedElement对象?

时间:2011-03-31 15:06:27

标签: python django api lxml django-piston

我正在尝试创建一个django-piston API,它读取另一个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给出一个正确的对象)时,我只得到一个空字符串。

如何让它发挥作用?

1 个答案:

答案 0 :(得分:1)

这取决于你需要从lxml.objectify.ObjectifiedElement获得什么。如果您想从该元素获取文本内容,可以通过

访问它
my_node.text

如果您需要属性值,可以通过以下方式访问它:

my_node.attrib['nameofattribute']