Отправляя массив текстов в 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"]
Вернуться на верх