我知道这是一个非常基本的问题,但在浪费了我一整天之后,我就是在问这个问题。我只是使用以下AngularJS代码向Django发送数据:
$http.post('/data/creation',
{
html: 'a'
}).
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
console.log(status);
console.log(data);
});
和django:
@csrf_exempt
def snippets_post(request):
html = False
css = False
js = False
JSONdata = False
response = "You're looking at the results of question %s."
if request.method == 'POST':
try:
JSONdata = request.POST.get('data', False) # it was [] in actual
except:
JSONdata = 'ERROR'
return HttpResponse(JSONdata)
我收到False作为回复,“通过在POST中将数据替换为html。结果相同”。我不知道这里出了什么问题。任何人都可以帮我这个吗?
谢谢
答案 0 :(得分:5)
实际上,当我们使用$ http的POST从AngularJs发送数据时,它会将带有 content-type =" application / json" 的数据发送到服务器。而Django并不了解这种格式。因此,您无法获取已发送的数据。
解决方案是使用以下配置更改内容类型标头:
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
}]);