Отправка массива из jQuery в представление DjangoJquery

Программирование на jquery
Ответить
Anonymous
 Отправка массива из jQuery в представление Django

Сообщение Anonymous »

Я делаю очень маленькое приложение для изучения Django. Я отправляю вложенный массив из jQuery и пытаюсь зациклить его в представлении 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 = [];
build.push(p1, p2, p3);
sending.push(build);
console.log(sending);
});
$.ajax({
url: '../coreqc/exModel/',
data: {'sending': sending},
type: 'post',
headers: {'X-CSRFToken': '{{ csrf_token }}'},
async: 'true',
success: function (data) {

console.log("I made it back")
//dom: 'Bfrtip',

}
});
});

Вышеупомянутое работает и принимает в консоли следующую форму: Обратите внимание, что третье значение намеренно пусто, поскольку я отправил форму без значений в полях, чтобы ее можно было прочитать в консоли.< /p>
[Log] [["Product A", "1", ""], ["Product B", "2", ""], ["Product C", "3", ""], ["Product D", "4", ""], ["Product E:", "5", ""], ["Product F", "6", ""], ["Product G", "7", ""], ["Product H", "8", ""], ["Product I", "9", ""], ["Product K", "10", ""], …] (36) (coreqc, line 491)
[Log] I made it back # This is the success text in the above jQuery code

Он попадает в мое представление, и я могу распечатать() вывод в оболочку:
представление exModel:
def exModel(request):
sentData = request.POST
print(sentData)

template = loader.get_template('coreqc/tester.html')
context = {
'sentData':sentData
}
return HttpResponse(template.render(context, request))

Теперь 'sentData' печатает в оболочку, но мне это кажется неправильным или, по крайней мере, 'sending[1][]' нет. Когда я говорю, что это выглядит неправильно, я не понимаю пустую квадратную скобку. Я не могу получить доступ к отправке, например send[1][2] - я получаю ошибку ключа словаря.


На мой взгляд, мне бы хотелось иметь возможность перебирать каждое значение в QueryDict в цикле, а не просто печатать их. Однако я не уверен, как получить к ним доступ и доступно ли то, что отправляется.
get.values() — работает, и я могу печатать на консоли — выглядит так же, как указано выше. p>
Я могу зациклить и распечатать вот так:
for x, obj in sentData.items():
print(x)

for y in obj:
print(y + ':', obj[y])

Однако я только что получил этот вывод, он печатает следующее:
sending[0][]
sending[1][]
sending[2][]
sending[3][]

Мне нужен доступ к внутренним значениям, то есть «Продукту А», и я не совсем уверен, как мне это сделать.
Итак, подведем итог:
  • Правильно ли я отправляю данные из jQuery? правильно — это способ, с которым Python Django может справиться.
  • Как мне зациклить указанные данные, чтобы получить доступ к каждому полю данных.
Большое спасибо за любую помощь.
Обновление: следуя комментариям, я внимательно изучил контент, отправляемый Jquery. Я обнаружил, что, несмотря на изменение заголовков и т. д., он выглядел как закодированный URL-адрес. Я исправил заголовки и проверил тип контента, и теперь он выглядит как application/json. Однако проблема, с которой я столкнулся сейчас, заключается в том, что request.body заполнен такими символами "%":
application/json
[26/Oct/2024 09:10:09] "POST /coreqc/exModel/ HTTP/1.1" 200 4631
b'sending%5B0%5D%5B%5D - this continues. I believe all the data is there but maybe it's unicode issue.


Подробнее здесь: https://stackoverflow.com/questions/791 ... jango-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»