我通過網頁瀏覽器(chrome/safari)向Django Rest框架發送了一個補丁請求。 當我嘗試從Django後端訪問數據request.data
,當通過Google Chrome觸發API(https://test.mysite.com/cart/)時,我可以讀取數據。但是,當同樣的PATCH請求從Safari瀏覽器觸發的瀏覽器不給我request.data(顯示爲空)django REST API中的request.data爲空使用AngularJS從Safari請求PATCH請求
JS調用API車:
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}
在Django上訪問通過PDB請求對象請求的數據。
Django的代碼來訪問:從瀏覽器請求時
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: {}>
此外,您還需要顯示如何觸發此操作的代碼。瀏覽器本身不會發送PATCH,所以您必須有一些自定義代碼。 –
更新了更多代碼快照添加的細節。請幫助我的想法。 – thatzprem
@Alasdair - 我更新了代碼 – thatzprem