我正在发布Django中的视图。 POST正文包含以下格式的数据:
{
'Service' : 'API'
}
我在我的观点中这样做:
args = request.POST
service = args.get('Service', '').strip()
但service
出现为''
我使用了pdb而request.POST
是这样的:
<QueryDict: {u"{\n 'Service' : 'API'\n}": [u'']}>
这就是service
成为''
的原因,因为它已成为一个字典中的字典。我想知道这应该发生吗?什么是[u'']
。它从哪里添加到身体?如果它是应该发生的事情,我如何解析身体以获得Service
?
答案 0 :(得分:1)
如果您发布类似的字符串(常见于JSON-RPC之类的东西),使用已知格式(如multipart/form-data
),则可以使用此(在您的视图中):
def post(self, request, *args, **kwargs):
body = request.body # This is your string
data = json.loads(body)
service = data['Service']
这取决于您的前端代码发布有效的JSON数据。否则,您将被留给自己的设备来解码不太标准的东西(例如,您的示例使用单引号 - 无效的JSON)。使用JSON.stringify(my_obj)
将JavaScript对象编码为JSON,然后发布该值。