웹 브라우저 (chrome/safari)를 통해 Django Rest 프레임 워크에 패치 요청을 보냅니다. Google 크롬을 통해 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를 통해 요청 된 데이터에 액세스하는 중. 에 액세스 할 수
장고 코드 : 크롬에서 요청
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)
장고 콘솔 로그 : 사파리에서 요청
-> return ModelViewSet.update(self, request, *args, **kwargs)
(Pdb)
(Pdb) request.data
<QueryDict: {u'{"num_cases":8}': [u'']}>
장고 콘솔 로그 :
<QueryDict: {}>
(Pdb) request.data
<QueryDict: {}>
또한이 작업을 트리거하는 방법에 대한 코드를 표시해야합니다. 브라우저는 기본적으로 PATCH를 보내지 않으므로 사용자 정의 코드가 있어야합니다. –
더 많은 코드 스냅 샷 추가로 세부 정보를 업데이트했습니다. 당신의 생각을 도와주세요. – thatzprem
@Alasdair - 코드를 업데이트했습니다. – thatzprem