Post方法是获取字节而不是json数据

时间:2018-04-05 18:13:47

标签: python jquery api

我正在从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'

期待: {'标题':'你好','描述':'世界那里'}

我该怎么做才能获得预期的结果?

1 个答案:

答案 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'))