Я не могу получить доступ к первичному ключу объекта, сериализованного Django в JSON.Мой JavaScript выглядит так:
function makeLink() {
recorder && recorder.exportWAV(function (blob) {
let fd = new FormData;
fd.append("audio", blob);
let csrftoken = getCookie('csrftoken');
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var obj = JSON.parse(this.responseText);
/*console.log(obj[0].pk);*/
document.getElementById("result").innerHTML = obj.data[0]['pk'];
}
}
xhr.open('POST', uploadAudio_url , true)
//alert(uploadAudio_url)
xhr.setRequestHeader("X-CSRFToken", csrftoken);
xhr.onload = function () {
// __log("Audio Uploaded to server succesfully");
};
xhr.onerror = function (e) {
// __log("Error Uploading audio" + e)
};
xhr.send(fd);
});
}
Я отправляю данные BLOB-объектов, которые являются аудиофайлами, для обработки речи в серверной части.Серверная часть обрабатывает аудиофайл и правильно фильтрует объекты.Затем он отвечает клиенту с набором запросов в JSON.Я заинтересован в том, чтобы получить объекты ПК и показать изображения в сетке галереи.
Это мой
Views.py:
def process_speech(recognized_audio):
speech = recognized_audio
url = '' # Is the URL where the user will be redirected once speech is proccessed
keylist = []
for key in Keyword.objects.all():
if(speech.find(key.keyword.lower()) != -1):
keylist.append(key.keyword)
print('Identificado Keyword: ', keylist)
if (speech.find('fotos') != -1 or speech.find('fotografías') != -1):
print("Reconocido FOTO")
imagenes_filtered = Imagen.objects.filter(keyword__keyword__in=keylist)
#print(imagenes_filtered)
return imagenes_filtered
if (speech.find('video') != -1):
print("Reconocido VIDEO")
def upload(request):
print("Método: ", request.method)
print("Ajax: ", request.is_ajax())
if request.method == 'POST':
if request.FILES.get('audio'):
record_audio = request.FILES['audio']
fs = FileSystemStorage()
filename = fs.save(record_audio.name + ".wav", record_audio)
uploaded_file_url = fs.url(filename)
print("File received succesfully")
speech = decodeSpeech(filename)
print(speech)
objects = process_speech(speech)
data = serializers.serialize('json', objects)
return HttpResponse(JsonResponse({'data': data}, safe=False),)
else:
return render_to_response('index.html', {"errors":"No recognized audio"})
else:
return HttpResponseRedirect('/home/')
Данные Json, которые я получаю, таковы:
[
{
"model": "Galeria.imagen",
"pk": 20,
"fields":
{"image_width": 6000,
"image_height": 4000,
"fichero_imagen": "files/img/lucas-albuquerque-615558-unsplash.jpg",
"keyword": [17, 18]}
},
{
"model": "Galeria.imagen",
"pk": 21,
"fields":
{"image_width": 5855,
"image_height": 3860,
"fichero_imagen": "files/img/freestocks-org-794156-unsplash.jpg",
"keyword": [18]}
}
]
Я пробовалнапример:
- obj.data [0] .pk
- obj.data [0] [pk]
- obj.data [0]. ['pk']
- obj.data.pk [0]
и так далее, но я всегда получаю неопределенность.
Заранее спасибо