Я пытаюсь использовать больше javascript для vanilla вместо jQuery. У меня нет проблем с вызовом ajax с $ .post, но я не могу заставить его работать с vanilla javascript. Это мой вызов Ajax:Опубликовать через (ajax/javascript) в django view printing empty queryset
$(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, он печатает пустой QuerySet каждый раз.
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")
Как подготовить данные и получить их правильно?
UPDATE:
Я был в состоянии получить эту работу. Вызов ajax остается прежним. Для того, чтобы напечатать данные на мой взгляд, Джанго, я использовал следующий код:
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
print(body)
Печать тела дает следующие:
{ «детали»: «Вот некоторые подробности», «название ': 'Название', 'дата': '02/18/2017', 'тип': ''} Домашнее задание