如何使用django-piston读取lxml.objectify.ObjectifiedElement对象?
我正在尝试制作一个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 个回答
1
这要看你想从这个 lxml.objectify.ObjectifiedElement 中获取什么。如果你想获取这个元素的文本内容,可以通过以下方式访问:
my_node.text
如果你想获取某个属性的值,可以通过以下方式访问:
my_node.attrib['nameofattribute']