Estoy tratando de hacer una solicitud de venta al servidor local usando la solicitud de venta usando curl:
curl -X PUT -H "Content-Type: application/json" -d '{"connid":"12"}' "127.0.0.1:8000/api/kill"Recibo la misma respuesta:
El objeto 'WSGIRequest' no tiene el atributo 'PUT'
para el siguiente código:
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) También usé @csrf_exempt antes de la función.
Has entendido mal varias cosas aquí.
Cuando envía datos codificados en forma, ya sea POST o PUT, en Django siempre encontrará los parámetros en request.POST . Entonces encontraría sus datos en request.POST['conid'] .
Sin embargo, no está enviando datos codificados en forma; estás enviando JSON. Debe acceder al cuerpo de la solicitud y pasarlo a la función json.loads para decodificar:
def kill(request): data = json.loads(request.body) conid = data['connid']