2017-01-09 9 views
0

Webブラウザ(chrome/safari)からDjango Restフレームワークにパッチリクエストを送信します。 Google ChromeでAPI(https://test.mysite.com/cart/)が起動されたときに、Djangoバックエンドのデータrequest.dataの値にアクセスしようとしましたが、データを読み取ることができます。django REST APIでrequest.dataが空ですAngularJSを使用してSafariからPATCHリクエストをリクエストしました

var order = {}; 
    order.num_cases = 8; 

    var absloutePatchURL = '/cart/'+order.cartID; 
    window.console.log('Update cart absolute URL:',absloutePatchURL); 
    $http.patch(absloutePatchURL,order, {data:JSON}). success(function(data, status, headers, config) { 
     window.console.log("Your cart is updated successfully");     
     }).error(function(data, status, headers, config) { 
     toastr.error('Sorry, unable to update your item to the cart. Please try later.'); 
    }); 

要求の詳細:

URL: https://test.mysite.com/cart/ 
Request Type: PATCH 
Request Data: {"num_cases":6} 
同じPATCH要求はサファリからトリガーされたときしかし、ブラウザが(空として示して)私のカートのAPIを呼び出すために

JSをrequest.dataを与えるものではありません

DjangoのリクエストオブジェクトでPDBから要求されたデータにアクセス中です。 Accessへ

ジャンゴコード:Chromeから要求された

class CartViewSet(CartMixin, ModelViewSet): 

    def update(self, request, *args, **kwargs): 

     import pdb 
     pdb.set_trace() 

     logger.debug("Request Data: {0}".format(request.data)) 

     return ModelViewSet.update(self, request, *args, **kwargs) 

Djangoのコンソールログ:SAFARIから要求された

-> return ModelViewSet.update(self, request, *args, **kwargs) 
(Pdb) 
(Pdb) request.data 
<QueryDict: {u'{"num_cases":8}': [u'']}> 

Djangoのコンソールログ:

<QueryDict: {}> 
(Pdb) request.data 
<QueryDict: {}> 
+0

また、この操作をどのようにトリガーするかについてコードを示す必要があります。ブラウザはネイティブにPATCHを送信しないので、カスタムコードが必要です。 –

+0

より多くのコードスナップショット追加で詳細を更新しました。あなたの考えを助けてください。 – thatzprem

+0

@Alasdair - コードを更新しました – thatzprem

答えて

0

コンテンツタイプをapplication/jsonに設定していることを確認してください。それは、残りのフレームワークがapplication/x-www-form-urlencodedと扱っているかのように見えます。

+0

私はそれを試みたが、コードはまだ動作していないようです。 – thatzprem

関連する問題