Является ли эта строка JSON действительной, и если да, то как получить доступ к вложенным элементам в представлении Django

Я пытаюсь решить проблему, когда я отправляю JSON из jQuery через Ajax().

В этой функции я создаю вложенный массив объектов, прогоняю весь массив через JSON.strigify() и затем отправляю его в мою модель в Django.

Я успешно декодирую строку JSON (без ошибок), но не могу получить доступ к ней или к любой из ее частей. То же самое происходит, если я конвертирую в dict() или list(). Является ли JSON, который я отправляю в представление, действительным для работы с ним в Django, или мне нужно изменить способ его построения, чтобы получить доступ к его значениям.

JQuery Конструирование и отправка массива:

$(document).on('click','#exModel',function () {
        const sending = [];
       $("table tr").each(function () {

               var p1 =  $(this).find("th label").html();
               var p2 = $(this).find("td input").attr('id');
               var p3 = $(this).find("td input").val();

               const build = {bnaa:p1,id:p2,vals:p3};
               
               sending.push(build);
               
           });
        console.log(sending);

       $.ajax({
               url: '../coreqc/exModel/',
               data: JSON.stringify({'sending':sending}),
               type: 'POST',
               headers: {'content_type':'application/json','X-CSRFToken': '{{ csrf_token }}'},
               async: 'true',
               success: function (data) {
                   
                console.log("I made it back")
                        //dom: 'Bfrtip',

               }
                    });
                });

Массив отправляется в мое представление в Django. В консоли браузера, когда я веду лог перед отправкой, это выглядит так:

[{bnaa: "Product 1:", id: "1", vals: ""}, {bnaa: "Product 2:", id: "2", vals: ""}, {bnaa: "Product 3:", id: "3", vals: ""}, {bnaa: "Product 4:", id: "4", vals: ""}, {bnaa: "Product 5:", id: "5", vals: ""}, {bnaa: "Product 6:", id: "6", vals: ""}, {bnaa: "Product 7:", id: "7", vals: ""}, {bnaa: "Product 8:", id: "8", vals: ""}, {bnaa: "Product 9:", id: "9", vals: ""}, {bnaa: "Product 10:", id: "10", vals: ""}]

Когда я декодирую его с помощью json.loads(), я не могу распаковать значения. Я могу вывести все, если я превращу его в словарь, то смогу отобразить все элементы. Я просто не могу получить ключи и значения.

@csrf_protect
def exModel(request):
    
        data = request.body
        data = json.loads(request.body)
        print(data)
        template = loader.get_template('coreqc/tester.html')
        context = {
        'data':data
        }
        return HttpResponse(template.render(context, request))

Когда я печатаю данные выше, я получаю в терминале следующее:

{'sending': [{'bnaa': 'Product 1:', 'id': '1', 'vals': ''}, {'bnaa': 'Product 2:', 'id': '2', 'vals': ''}, {'bnaa': 'Product 3:', 'id': '3', 'vals': ''}, {'bnaa': 'Product 4:', 'id': '4', 'vals': ''}, {'bnaa': 'Product 5:', 'id': '5', 'vals': ''}, {'bnaa': 'Product 6:', 'id': '6', 'vals': ''}, {'bnaa': 'Product 7:', 'id': '8', 'vals': ''}, {'bnaa': 'Product 9:', 'id': '8', 'vals': ''}, {'bnaa': 'Product 9:', 'id': '9', 'vals': ''}, {'bnaa': 'Product 10:', 'id': '10', 'vals': ''}]}

Я перепробовал все возможные способы зацикливания переменной 'data', но, кроме как сбросить ее целиком, не могу получить доступ к вложенным элементам в 'sending', что заставляет меня сомневаться в способе отправки.

Вернуться на верх