【问题标题】:how to read an lxml.objectify.ObjectifiedElement object with django-piston?如何使用 django-piston 读取 lxml.objectify.ObjectifiedElement 对象?
【发布时间】:2011-03-31 15:06:26
【问题描述】:

我正在尝试制作一个 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 提供一个正确的对象),我只得到一个空字符串。

如何让它发挥作用?

【问题讨论】:

    标签: python django api lxml django-piston


    【解决方案1】:

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

    my_node.text
    

    如果你想要一个属性值,你可以通过以下方式访问它:

    my_node.attrib['nameofattribute']
    

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多