发布数据自角度.js到使用JSON的Django REST API

2024-05-15 04:15:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用AngularJS以及Python&Django和Django restapi。有一个由restapi创建的JSON文件,我需要使用Angular将数据发送到其中$http.post(). 在

我想知道这是否可能。在

我主要收到了403(禁止)和400(错误请求)的post错误。。在

$http({
       method: 'POST',
       url: '<JSON FILE URL>',
       data: $scope.tmpdataset,
       headers: {'Content-Type': 'application/x-www-form-urlencoded'}

 }});

这是我的.post()方法。其中im从angular格式的表单中获取数据并将其存储在“tmpDataSet”中。它被正确地创建并且我能够存储到数组中。我只是无法将其写入JSON文件。在

我的JSON文件的结构是

^{pr2}$

如果需要更多的代码细节,请评论。在


Tags: 文件数据djangorestapijsonhttpurl错误
3条回答

这个问题可以通过向angular app添加CSRF令牌并使用正则的$http.post()函数和所有参数来解决。在

app.config(function($httpProvider) {
    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
});

而且

^{pr2}$

这是怎么回事$scope.tmpDataSet看起来像?因为您已经为url encoded指定了一个内容类型

   headers: {'Content-Type': 'application/x-www-form-urlencoded'}

这表明后端接收到的数据不正确,因为您可能正在传递js对象/数组作为请求的主体。这可以解释你收到的400个错误请求。在

Url编码数据的格式应为

^{pr2}$

其中+代表空白。在

如果使用jQuery,可以尝试使用$.param()将Java对象转换为url编码的字符串

$http({
   method: 'POST',
   url: '<JSON FILE URL>',
   data: $.param($scope.tmpDataSet),
   headers: {'Content-Type': 'application/x-www-form-urlencoded'}
 }});

否则试试这个答案

https://stackoverflow.com/a/24964658/3371851

这句话有点奇怪:

There is a JSON file created by the REST API and I need to post data into it using Angular $http.post().

如果要将数据发布到Django,则需要为该视图定义一个视图和URL路由。比如:

def page(request):
    if request.POST:
          .... do stuff with POST data

请注意,您必须将数据发布到视图中,如果您的文件系统中有一个简单的JSON文件,则不能通过向其发布JSON来添加数据。在

相关问题 更多 >

    热门问题