简体   繁体   中英

WSGIRequest object has no attribute PUT

I'm trying to make a put request to the local server using the put request using curl:

curl -X PUT -H "Content-Type: application/json" -d '{"connid":"12"}' "127.0.0.1:8000/api/kill"

I receive the same response:

'WSGIRequest' object has no attribute 'PUT'

for the following code:

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)

I also used @csrf_exempt before the function.

You have misunderstood several things here.

When you send form-encoded data, whether it's POST or PUT, in Django you always find the parameters in request.POST . So you would find your data in request.POST['conid'] .

However, you are not sending form-encoded data; you are sending JSON. You need to access the request body, and pass it to the json.loads function to decode:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM