2017-09-15 18 views
1

當發送POST請求發送到以下視圖中,request.POST字典是空的:空request.POST

@csrf_exempt 
def created_query(request): 
    if request.method == 'POST': 
     print(request.POST) 
     server = get_object_or_404(Server, pk=request.POST['server']) 
     if server.owner == request.user: 
      if server.created: 
       return HttpResponse("created") 
      else: 
       return HttpResponse("pending") 
     else: 
      return HttpResponseForbidden 
    else: 
     return HttpResponseForbidden 

我試圖與生成所述POST請求的多種方式,如本捲曲請求:

curl --request POST \ 
--url http://localhost:80/created/ \ 
--form server=60 \ 
--form action=created 

我檢查了字典使用調試器,以及只是打印它,它總是空的。我懷疑它是與urls.py但是這裏有一個問題是文件在處理這一觀點的行:

url(r'^created/', views.created_query, name='created'), 

的事情,我們已經嘗試過:

+2

應該發佈什麼?我看不到一個正在創建的表單 – Hisagr

+0

這不是通過表單發送的,它實際上是一個API端點,它在主體,服務器和操作中佔用兩項(從CURL請求中可以看出)。這些都不是在最後request.POST然而,@Hisagr –

回答

1

從Django 1.5開始,POST不再包含非表單數據。可以使用request.body

+0

Django文檔中是否有任何有關'request.post'的信息?我可以看到很多'POST',但Google在小寫和大寫之間做得並不好。 –

+0

好吧,如果你只使用django,你可以使用'request.body'。而request.post只能在django rest框架中使用。這裏是[文檔](https://docs.djangoproject.com/en/1.11/releases/1.5/#non-form-data-in-http-requests) – KyleDing