根据documentation,这足以传递多值。
def __init__(self):
super(LatestNewsAPI, self).__init__()
self.req_parser = reqparse.RequestParser()
self.req_parser.add_argument('date', type=str)
self.req_parser.add_argument('media', action='append')
我试图将两种媒体附加到列表中:
rss_date_time = parser.parse('Tue, 15 Jan 2015 18:13:00 GMT')
param = {'date': rss_date_time, 'media': 'GRD', 'media': 'IND'}
url = '/api/v1.0/latest_news/?{0}'.format(urllib.urlencode(param))
rv = self.client.get(url, headers={},
environ_base={'REMOTE_ADDR': '127.0.0.1'})
然而,一旦我到达那里:
def get(self):
args = self.req_parser.parse_args()
date_str = args['date']
date_time = parser.parse(date_str)
media = args['media']
媒体仅包含[u'IND']
。
我错过了什么?
答案 0 :(得分:0)
您应该使用数组:
param = {'date': rss_date_time, 'media[]': ['GRD', 'IND']}
在Python中,它们实际上称为list
。
编辑:
同样,你应该使用
media = args['media[]']
而不是接收方。
答案 1 :(得分:0)
在这种情况下,它实际上是一个urllib问题:
我必须添加的是doseq=True
url = '/api/v1.0/latest_news/?{0}'.format(urllib.urlencode(param, doseq=True))
并将params更改为列表:
param = {'date': rss_date_time, 'media': ['GRD', 'IND']}
现在我得到[u'GRD', u'IND']