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

0 投票
1 回答
849 浏览
提问于 2025-04-16 14:49

我正在尝试制作一个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']

撰写回答