Django 2.1: визуализация JSON-ответа на шаблон, строка байтов не работает с JavaScript - PullRequest
0 голосов
/ 07 ноября 2019

В представлении:

response = JsonResponse(available_lessons, safe=False)

В шаблоне:

var available_lessons_json = {{available_lessons_json.content|safe}}

В моем исходном js-файле я вижу:

var available_lessons_json = b'{"courses": {"courseName": "Everyday English", "lessons": ["Phrasal Verbs I", "Phrasal Verbs II", "Phrasal Verbs III"]}}'

, который дает мне ошибку«Uncaught SyntaxError: неожиданная строка»

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Если вы хотите визуализировать ваш шаблон с вашими данными, вам следует использовать функцию render, а не JsonResponse. Это должно быть так.

return render(request, template, {'available_lessons': available_lessons})

В вашем шаблоне

var available_lessons_json = {{available_lessons|safe}}
1 голос
/ 07 ноября 2019

Javascript не нравится b в начале вашего ответа, что означает, что это строка байтов. response.content всегда кодируется в байты, которые вы можете декодировать с помощью {{available_lessons_json.content.decode|safe}}

Просто имейте в виду, что если response.content содержит вводимые пользователем данные, вы, вероятно, будете внедрять XSS-уязвимости на свой сайт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...