WSGIRequest对象没有属性PUT

时间:2017-04-02 16:43:36

标签: python json django wsgi put

我正在尝试使用curl:

使用put请求向本地服务器发出put请求
curl -X PUT -H "Content-Type: application/json" -d '{"connid":"12"}' "127.0.0.1:8000/api/kill"

我收到同样的答复:

  

'WSGIRequest'对象没有属性'PUT'

代码如下:

def kill(req):
  conid = req.PUT['connid']
  statusres = {}

  if conid in state:
    error[conid] = 'true'
    statusres['status'] = 'ok'

  else:
    statusres['status'] = 'invalid connection Id : '+ conid
  return JsonResponse(statusres)

我还在函数前使用了@csrf_exempt

1 个答案:

答案 0 :(得分:0)

你在这里误解了几件事。

当您发送表格编码数据时,无论是POST还是PUT,在Django中,您始终可以在request.POST中找到参数。因此,您可以在request.POST['conid']

中找到您的数据

但是,您发送表单编码数据;你正在发送JSON。您需要访问请求正文,并将其传递给json.loads函数进行解码:

def kill(request):
  data = json.loads(request.body)
  conid = data['connid']