2017-04-02 72 views
1

我試圖用PUT請求使用curl做一個PUT請求到本地服務器:WSGIRequest對象沒有屬性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之前的函數。

+0

什麼是'req'?這是Django視圖嗎?該參數通常被稱爲「請求」。無論哪種方式,是什麼讓你認爲它有一個名爲'PUT'的參數? –

+0

req是請求對象。是的,這是一個Django視圖..這裏[鏈接](http://stackoverflow.com/questions/4994789/django-where-are-the-params-stored-on-a-put-delete-request)@DanielRoseman –

+0

是。你讀過那個鏈接了嗎?它明確表示你不能這樣做。但是,無論如何,因爲您正在發送JSON。 –

回答

0

您在這裏誤解了幾件事情。

在Django中發送表單編碼數據時,無論是POST還是PUT,您都可以在request.POST中找到參數。所以你可以在request.POST['conid']找到你的數據。

但是,您是而不是發送表單編碼的數據;你正在發送JSON。您需要訪問請求主體,並將其傳遞給json.loads函數進行解碼:

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

... thanx很多! –

相關問題