Отправляя массив текстов в Django через POST, не удается получить массив, получаем строку
Я отправляю эти данные в Django, эти тексты получены из нескольких CKEditors
chk_vals = ["Some text","Other text"];
const data = new URLSearchParams();
data.append("csrfmiddlewaretoken", "{{csrf_token}}");
data.append("tmplData", JSON.stringify(chk_vals));
fetch(uri, {
method: 'post',
body: data,
})
.then(response => response.json())
.then(data => {
Это из сети Chrome: tmplData: [«Какой-то текст», «Другой текст»]
Теперь Django:
data = request.POST
templateArr = data.getlist('tmplData')
templateList = list(templateArr)
Длина templateList равна 1, он получает его как одну строку, и я не могу разделить ее с помощью ',', потому что эти тексты могут содержать ',' тоже.
Я также пробовал templateArr = data.getlist('tmplData[]')
и отправка без JSON.stringify, но ничего не работает
data = request.POST
templateArr = data.getlist('tmplData[]')
templateList = list(templateArr)
и эта переменная templateArr пуста
Попробуйте отправить значения из фронтенда в виде отдельных полей, как показано ниже:
chk_vals = ["Some text", "Other text"];
const data = new URLSearchParams();
data.append("csrfmiddlewaretoken", "{{csrf_token}}");
chk_vals.forEach(value => data.append("tmplData", value));
fetch(uri, {
method: 'POST',
body: data,
})
.then(response => response.json())
.then(data => console.log(data));
А затем попробуйте получить доступ к нему через ваш бэкенд Django, как показано ниже:
templateArr = request.POST.getlist('tmplData') # templateArr = ["Some text", "Other text"]