Python Tastypie,将params传递给GET请求

时间:2012-09-05 22:35:55

标签: python django rest tastypie

我需要通过XML而不是通过GET查询参数将过滤器传递给api。

我这样做:

curl --dump-header - \
    -H "Content-Type: application/xml" -X GET \
    --data '<object><title>Hello XML</title><date>200-01-01</date></object>' \
    http://x.x.x.x/api/entry/

我希望与:http://x.x.x.x/api/entry/?format=xml&title=Hello XML&date=200-01-01相同但{G}请求会忽略--data。所以,我的问题是,如何使用tastypie将XML传递给GET请求?

提前感谢您的帮助。

修改

我还应该注意,在XML数据中我希望能够设置限制和偏移量以及过滤器。

1 个答案:

答案 0 :(得分:2)

您最好的选择可能是覆盖Resource.dispatch_list()来解析请求正文中的过滤器并将它们带入关键字参数。像这样:

def dispatch_list(self, request, **kwargs):
    body_filters = parse_xml_get_data(request) # <- MAGIC: returns a dict()
    kwargs.update(body_filters)
    return super(MyResource, self).dispatch_list(request, **kwargs)

当你深深颠覆这个框架时,我强烈建议你阅读TastyPie的request-response cycleresources.py,这样你才能完全理解你在做什么。

另外,在那里写parse_xml_get_data()函数you'll need to get at the raw request body