Как прочитать объект lxml.objectify.ObjecifiedElement с django-поршнем? - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь создать django-поршневой API, который читает другой API и представляет его в другом формате (читает API только для XML и представляет его в 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 голос
/ 12 апреля 2011

Это зависит от того, что вам нужно от этого lxml.objectify.ObjectifiedElement.Если вы хотите получить текстовое содержимое из этого элемента, вы можете получить к нему доступ через

my_node.text

Если вы хотите получить значение атрибута, вы можете получить к нему доступ через:

my_node.attrib['nameofattribute']
...