Как передать переменную jinja в обработчик события на javascript

Мне нужно передать переменную jinja в обработчик события onclick, который создаёт яндекс карту по id и center

{% set id = 10 %}
{% set center = [50, 50] %}
<button onclick="createMap('ymap_' + {{ id }}, {{ center }})"></button>

Такой код не работает, я получаю такие ошибки:

Property assignment expected.
',' expected.
Argument expression expected.
Property assignment expected.
',' expected.

Ошибки в коде

Ошибки перечислены в таком порядке, в каком они подсвечены на картинке.


Ответы (1 шт):

Автор решения: hedgehogues

Для того чтобы исправить эти ошибки, нужно обернуть значения переменных id и center в кавычки, чтобы они были правильно переданы в функцию createMap как строки.

Вот как должен выглядеть исправленный код:

{% set id = 10 %}
{% set center = [50, 50] %}
<button onclick="createMap('ymap_' + '{{ id }}', '{{ center }}')"></button>

Обратите внимание, что также нужно добавить кавычки вокруг значений переменных id и center, чтобы они были правильно интерпретированы как строки.

В качестве альтернативы, вы также можете использовать функцию escapejs из Jinja2 для корректной экранировании переменных:

<button onclick="createMap('ymap_' + {{ id|escapejs }}, {{ center|escapejs }})"></button>
→ Ссылка