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.