我需要通过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数据中我希望能够设置限制和偏移量以及过滤器。
答案 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 cycle和resources.py,这样你才能完全理解你在做什么。
另外,在那里写parse_xml_get_data()
函数you'll need to get at the raw request body。