Я визуализирую данные ответа json через apiview в django restframework, в html template list.html, где я хочу получить эти данные в коде javascript. Однако каждый раз он выдает сообщение «отсутствует) после ошибки списка аргументов», даже если они фактически не присутствуют в полученных данных (как видно в инструментах проверки хрома)
Получение ошибки
var list =JSON.parse("{{data|safe}}")
Код apiview из views.py, который отображает данные:
@api_view(['GET','POST'])
def memeList(request):
if request.method=='GET':
meme = Meme.objects.all().order_by('-meme_id')[:100]
serializer = MemeSerializer(meme, many=True)
elif request.method=='POST':
serializer=MemeSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
serJS = JsonResponse(serializer.data,safe=False)
return render(request,'list.html',{'data':serJS.content})
Любое решение для этого, поскольку я перепробовал все доступные решения в Интернете, проблема не решена.
2 ответа
Проблема заключается в последней строке фрагмента из вашего файла views.py:
return render(request, 'list.html', {'data': serJS.content})
Здесь serJS.content
возвращает байтовую строку, представляющую содержимое. Чтобы разобрать его как JSON, вам нужно преобразовать его в строку, отобразить в теле html, а затем он будет правильно проанализирован как JSON. Используйте вместо этого:
return render(request, 'list.html', {'data': serJS.content.decode()})
Вы не можете сделать это:
var list = JSON.parse("{{data|safe}}")
{{ data|safe }}
отобразит объекты Python, которые нельзя (надежно) проанализировать как JSON.
Скорее всего, вы захотите использовать json_script
шаблонный фильтр. Следуйте инструкциям в документации, чтобы получить данные в формате JSON в JavaScript.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.