Код 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
Мобильная версия