这是POST正文的正确格式吗?

时间:2013-06-17 03:26:40

标签: python django http-post

我正在发布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

1 个答案:

答案 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,然后发布该值。