LINUX.ORG.RU

Передача переменных Django в JS, возможно ли?

 , ,


0

1

Привет всем. Собственно нужно написать код на JS, который будет делать нечто. Для этого я хочу передать ему отфильтрованную коллекцию Django QuerySet по типу html-шаблонов типа

<script> 
let mycollection = new Array();
{% for item in items %}
  mycollection.push({{tem.title}})
{% endfor %}</script>
. Такое вообще можно сделать или надо как-то иначе тянуть ее с сервера?

★★★★★

Последнее исправление: LongLiveUbuntu (всего исправлений: 2)

Подписался на годный тред.

LamerOk ★★★★★
()

Другого способа, в общем, и нет. Разве что загружать значения динамически через XHR (зависит от размера и сложности данных в коллекции).

Можешь посмотреть, как реализованы переводы строк для js в Django — точно таким же способом.

emorozov
()

Закодируй данные в json. Отлично работает как escape для js.

eternal_sorrow ★★★★★
()

Передача и парсинг в виде json порешала проблему. На стороне сервера делаем выборку чего надо и потом json.dumps по коллекции, на стороне клиента пихаем JSON.parse(«{{collection | escapejs}}»). Отдельное спасибо eternal_sorrow.

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

если это простые переменные (не массивы или словари например), то необязательно JSON.parse даже. простые строки, числа и булевы значения являются с одной стороны валидным json’ом, а с другой стороны валидными значениями в js.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

В моем случае это был таки массив. Так что я подстраховался.

LongLiveUbuntu ★★★★★
() автор топика

по типу html-шаблонов

Посему бы тогда сразу не кидать захардкоженный (с точки зрения JS) объект, собрав его в шаблоне?
А так да, нормально - это drf

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от LongLiveUbuntu

Голый Django в 2021 не справляется уже, сейчас жирный клиент и тупой бекенд - вот так принято. И на беке куча всяких служб, и Go и питон и нода - все работают на благо бизнеса

menangen ★★★★★
()

Братуха, будешь смеятся, но так не только можно но и нужно делать.

Можно просто собрать в коде шаблона с помощью обычных выражений шаблонного движка Django объект JSON и проинициализировать его. Ведь до этапа парсинга DOM-дерева браузером весь навороченый комплекс HTML-JS-CSS это просто текст, обычный вполне себе текст. На этом стоит весь интернет.

pup_kin
()
Ответ на: комментарий от menangen

Ща кинулся переписывать клиента.

Может и правда потом перепишу, если оно удобнее окажется.

LongLiveUbuntu ★★★★★
() автор топика

Кавычки, букву i и точку с запятой забыл поставить

[code] mycollection.push(«{{ item.title }}»); [code]

dicos ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.