通过(ajax/javascript)发布到 django 视图打印空查询集

Posted

技术标签:

【中文标题】通过(ajax/javascript)发布到 django 视图打印空查询集【英文标题】:Post via (ajax/javascript) to django view printing empty queryset 【发布时间】:2017-06-30 17:57:29 【问题描述】:

如果使用 jquery,我正在尝试使用更多的原生 javascript。我使用 $.post 进行 ajax 调用没有问题,但我似乎无法让它与 vanilla javascript 一起使用。这是我的 ajax 调用:

$(document).ready(function () 
    $('#addAssignment').click(function () 
        $('#addAssignmentModal').modal('toggle');
    );

    $('#submitAssignment').click(function () 
        if(checkModal())
            var assignment = 
                title: $('#newAssignmentTitle').val(),
                type: $('#assignmentSelection').val(),
                date: $('#newAssignmentDate').val(),
                details: $('#newAssignmentDetails').val()
            

            console.log(assignment);
            submitAssignment(assignment);
        
    );
);

function submitAssignment(assignment) 
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() 
        if (this.readyState == 4 && this.status == 200) 
            //Do stuff
        
    ;
    request.open("POST", '/data/api/create-assignment/', true);
    request.setRequestHeader('X-CSRFToken', cookies['csrftoken']);
    //assignment is equal to: title: "Title", type: "Homework", date: "02/18/2017", details: "Detais"
    request.send(JSON.stringify(assignment));

当我尝试在我的 Djano 视图中打印出数据时,它每次都会打印出一个空的查询集。

def createAssignment(request):
    if request.method == 'POST':
        print(request.POST) # this prints an empty queryset
        # assignment = Assignments()
        # assignment = request.POST.get('assignment')
        # assignment.save()
        data = 
        data['status'] = "Success"

        return HttpResponse(json.dumps(data), content_type="application/json")
    else:
        data = 
        data['status'] = "Data must be sent via POST"

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

如何准备我的数据并正确接收?

更新:

我能够得到这个工作。 ajax 调用保持不变。为了在我的 django 视图中打印数据,我使用了以下代码:

body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
print(body)

打印正文给出以下内容:

'details': 'Here are some details', 'title': 'Title', 'date': '02/18/2017', 'type': 'Homework'

【问题讨论】:

【参考方案1】:
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
print(body)

【讨论】:

以上是关于通过(ajax/javascript)发布到 django 视图打印空查询集的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 php/ajax/javascript 动态检测蜂窝运营商? [关闭]

JSF 1.1-不刷新页面调用backing bean的动作方法(通过ajax/javascript)

通过 Ajax Javascript 调用 SAP SOAP Web 服务——绕过跨域策略

在本地主机开发期间,Dj-Stripe webhooks

ruby 通过Rails中的ajax / javascript文件下载

坦克大战DJ。。。我想把这首歌放到QQ空间