我通过网页浏览器(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