我正在从jquery发帖子请求在我的博客中创建一篇文章。
//Responsible for creating an article
$('#create-article').click(function(e){
title = $('#input-title').val()
description = $('#input-desc').val()
data = {title, description}
$.post('/blog/create/', data, 'json')
e.stopPropagation();
e.preventDefault();
})
下面的视图负责打印POST响应。根据我的POST提交,它应该打印出一个json响应,但它打印出一个Python字节。为什么会这样?
@csrf_exempt
def create_article(request):
if request.POST:
print(request.body)
return HttpResponseRedirect(reverse('home'))
打印: b' title = hello +& description = world + there'
期待: {'标题':'你好','描述':'世界那里'}
我该怎么做才能获得预期的结果?
答案 0 :(得分:0)
即使您指定服务器在AJAX调用中返回JSON,您仍需要在后端处理JSON的返回。现在request.body
只返回Python的默认值,而不是JSON。
import json
@csrf_exempt
def create_article(request):
if request.POST:
print 'Content-Type: application/json\n'
print(json.dumps(request.body))
return HttpResponseRedirect(reverse('home'))