gpt4 book ai didi

javascript - Django View 未从 Angularjs $http 请求接收数据

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:07 25 4
gpt4 key购买 nike

我正在使用 Angular $http 将数据发布到 Django,但 Django 没有收到它。我一定是滥用了 $http(因为这与 ajax 一起工作)或者我的 django View 是错误的。

<div ng-controller="mycontroller2">
<form ng-submit="submit()">
{% csrf_token %}
Search by name:<input ng-model="artiste" />
<input type="submit" value="submit" />
</form>
<table>
<tr ng-repeat="artist in artists">
<td> {({ artist.fields.link })} </td>
</tr>
</table>
</div>
<script>
artApp.controller('mycontroller2', ['$scope', '$http',
function($scope, $http){
$scope.submit = function(){

var postdata = {
method: 'POST',
url: '/rest/',
data: {
"artiste": $scope.artiste
},
headers: {
'X-CSRFTOKEN': "{{ csrf_token }}"
}
};
$http(postdata)
.success(function(data){
$scope.artists = data;
})
}
}]);
</script>

views.py 中的请求处理程序看起来像

def rest(request):

artistname = request.POST.get("artiste") # should get 'da vinci'
response_data = {}
response_data = serializers.serialize("json", Art.objects.filter(artist__contains=artistname))
return HttpResponse(json.dumps(response_data), content_type="application/json")

我从 Django 得到的错误是 ValueError at/rest/Cannot use None as a query value

我获取“artiste”值的调用不能从 $http data 对象返回“da vinci”。我确定它已成功发送,因为数据 artiste: da vinci 显示在我的 devtools 标题中。 Django 只是没有得到那个值。 request.POST.get("artiste") 调用有问题吗?

最佳答案

由于来 self 的$http 请求的数据是原始 json 数据,因此必须更改我的 Django 请求处理程序来处理该数据。现在函数(在 views.py 中)看起来像

def rest(request):

artistname = json.loads(request.body) # <- accepts raw json data
artistname = artistname['artiste'] # <- and now I can pull a value
response_data = {}
response_data = serializers.serialize(
"json", Art.objects.filter(artist__contains=artistname))

return HttpResponse(json.dumps(response_data), content_type="application/json")

关于javascript - Django View 未从 Angularjs $http 请求接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com