2011-03-31 49 views
0

我正在尝试制作一个Django活塞API,它读取另一个API并以不同的格式显示它(读取仅支持XML的API并以JSON显示)。但我有麻烦,因为我这样做的方式,我只是一个空字符串。如何用django-piston读取lxml.objectify.ObjectifiedElement对象?

这里是我的处理程序:

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'> 

在我的网址。 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_nod e给出了一个正确的对象),我只是得到一个空字符串。

如何使它工作?

回答

1

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

my_node.text 

访问它,如果你想要的属性值,你可以通过访问:

my_node.attrib['nameofattribute']