2017-07-25 40 views
2

我有角2碼:郵政查詢API在Django REST

sendPost(){ 
    let headers = new Headers(); 
     headers.append('Content-Type', 'application/json'); 

    let requestOptions = new RequestOptions({headers: headers}); 
    requestOptions.headers = headers; 

     let data = { 
        "name": "XX", 
        "email": "[email protected]", 
        "phone_number": "+99999995555", 
        "address": "YYY", 
        "code": "80-885", 
        "city": "YHYY", 
        "voivodeship": "ZZZZ", 
        "description": "VVVVV" 
        }; 

     this.http.post(`http://127.0.0.1:8000/companies/create`, data, requestOptions).subscribe(res => { 
      console.log(res.json()); 
      }, (err) => { 
      console.log(err); 
      }); 
    } 

錯誤API:

<WSGIRequest: OPTIONS '/companies/create'> 
Internal Server Error: /companies/create 
Traceback (most recent call last): 
    File "C:XX\CRM\env\lib\site-packages\django\core\handlers\exception.py", line 41, in inner 
    response = get_response(request) 
    File "C:XX\CRM\env\lib\site-packages\django\core\handlers\base.py", line 198, in _get_response 
    "returned None instead." % (callback.__module__, view_name) 
ValueError: The view my_crm.views.companies_create didn't return an HttpResponse object. It returned None instead. 
[25/Jul/2017 21:32:35] "OPTIONS /companies/create HTTP/1.1" 500 59515 

的API顯示,有錯誤的地方在功能,但是當我使用POSTMAN這是相同的JSON通過沒有問題。哪裏可以是錯誤? 我認爲使用POSTMAN測試時API處理得當。

編輯: API函數:

@csrf_exempt 
def companies_create(request): 
    """ 
    Create a new company. 
    """ 
    if request.method == 'POST': 
     data = JSONParser().parse(request) 
     serializer = CompanySerializer(data=data) 
     if serializer.is_valid(): 
      serializer.save() 
      return JsonResponse(serializer.data, status=201) 
     return JsonResponse(serializer.errors, status=400) 
+1

後一個API取景功能,請 – Aniket

+0

@Aniket我加 – programmerJavaPL

+2

你的HTTP方法是OPTION'WSGIRequest:OPTIONS',但你只響應如果POST方法 –

回答

1

的解決辦法是更換:

headers.append('Content-Type', 'application/json'); 

到:

headers.append('Content-Type', 'application/x-www-form-urlencoded'); 

我無法解釋這是因爲我正在發送一個JSON文件。也許有人會解釋這是關於什麼?