Я отправляю запрос на исправление через веб-браузер (хром/сафари) в среду 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: {}>
Также вам нужно показать код о том, как вы запускаете это действие. Браузеры не отправляют PATCH изначально, поэтому у вас должен быть собственный код. –
Обновили данные с дополнительными добавлениями кода. Пожалуйста, помогите мне с мыслями. – thatzprem
@Alasdair - Я обновил код – thatzprem