В этом Django-проекте, который я создаю, у меня есть данные, идущие туда-сюда между сервером и клиентом через javascript и python с использованием AJAX. Для удобства я разработал объект config
в JS для передачи важных параметров, которые должен знать сервер и отвечающий JS. Со стороны Python я не могу получить доступ к этому объекту, потому что это None
, но печать объекта на консоль JS перед отправкой и печать объекта POST на консоль Py оба показывает, что что-то есть. Я не понимаю, почему доступ к объекту JS (не к его элементам) в QueryDict
возвращается как None.
# JavaScript
var objConfig = {
param1: "more text data",
param2: "more text data",
param3: "more text data",
};
console.log(objConfig);
$.ajax({
type: "POST",
url: url,
data: {
csrfmiddlewaretoken: strCsrfToken,
strTextData: strTextData,
objConfig: objConfig
},
success: callback
});
# JS console output:
# Object {param0: "more text data", param1: "more text data", param2: "more text data"}
# Python
def DoTheThing(response):
print(response.POST.get('strTextData'))
print(response.POST.get('objConfig'))
print(response.POST)
print(response.POST.get('objConfig[param0]'))
# Python console output:
# Text data being sent to server.
# None
# <QueryDict: {'csrfmiddlewaretoken': ['...'], 'strTextData': ['Text data being sent to server.'], 'objConfig[param0]': ['more text data'], 'objConfig[param1]': ['more text data'], 'objConfig[param2]': ['more text data']}>
# more text data
Обратите внимание, как print(response.POST.get('objConfig'))
печатает None
, но print(response.POST.get('objConfig[param0]'))
печатает именно то, что я ожидал.
Я также заметил в QueryDict
, что, похоже, objObject
не представлен как объект, как я ожидал. Я понимаю из-за различий между объектами JS и Py, но каждый член объекта перечисляется индивидуально с помощью оператора индекса массива, который я не уверен, почему или как использовать правильно.
Я не могу просто получить весь объект objConfig
, мне нужен индивидуальный доступ к каждому члену? Кроме того, как это будет работать при попытке отправить objConfig
в HttpResponse? Я разработал объектный шаблон такого типа, чтобы сэкономить время и текстовое пространство, записывая каждый параметр отдельно для того, как я хочу, чтобы эти данные обрабатывались при переходе между сервером и клиентом.