2017-01-09 7 views
0

Я отправляю запрос на исправление через веб-браузер (хром/сафари) в среду Django Rest. Когда я попытался получить доступ к данным request.data значений из бэкэнда Django, когда API (https://test.mysite.com/cart/) запускается через Google Chrome, я могу прочитать данные. Но когда тот же запрос PATCH срабатывает от сафари браузер не дает мне request.data (показать, как пустой)request.data пуст в django REST API Запрос на запрос PATCH из Safari с использованием AngularJS

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} 

При доступе к данным, запрошенным через 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) 

Джанго консоль журнала при запросе от Chrome:

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

Джанго лог консоли при запросе от SAFARI:

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

Также вам нужно показать код о том, как вы запускаете это действие. Браузеры не отправляют PATCH изначально, поэтому у вас должен быть собственный код. –

+0

Обновили данные с дополнительными добавлениями кода. Пожалуйста, помогите мне с мыслями. – thatzprem

+0

@Alasdair - Я обновил код – thatzprem

ответ

0

Убедитесь, что вы задаете тип содержимого как application/json. Похоже, что система отдыха обрабатывает ее как application/x-www-form-urlencoded.

+0

Я попробовал, код по-прежнему не работает. – thatzprem