Подтвердить что ты не робот

Невозможно передать переменные jinja2 в javascript-фрагмент

Как передать данные jinja2 в javascript. У меня есть адрес REST REST как /logs/<test_case_name> Я пытаюсь использовать .getJSON() для запроса вышеуказанного URL-адреса и, следовательно, хотел бы передать данные jinja2, у которого есть testcasename для функции .getJSON.

пример кода:

<script type="text/javascript">
  alert({{name}});
</script>

Это не работает. Любые предложения, пожалуйста?

4b9b3361

Ответ 1

кроме инкапсуляции переменной в строку, альтернативный - jquery для получения прибыли:

в целом неплохая идея смешать язык шаблонов с javascript. Альтернативой было бы использовать html в качестве прокси-сервера - сохранить имя в таком элементе

<meta id="my-data" data-name="{{name}}" data-other="{{other}}">

то в javascript do

var djangoData = $('#my-data').data();

это имеет преимущество в:

  • javascript больше не привязан к странице .html
  • jquery неявно копирует данные

Ответ 2

Попробуйте использовать кавычки:

alert("{{name}}");

Ответ 3

Вот как я это сделал

Мой элемент html

<!--Proxy Tag for playlist data-->
<meta id="my_playlist_data" data-playlist="{{ playlist }}">

Мой script элемент

// use Jquery to get data from proxy Html element
var playlist_data = $('#my_playlist_data').data("playlist");

Смотрите . data() документация для более

Ответ 4

Я знаю, что это довольно старая тема, но, поскольку она привлекает множество мнений, я полагаю, что некоторые люди все еще ищут ответ.

Вот самый простой способ сделать это:

var name = {{name|tojson}};

Он "проанализирует" любое имя и отобразит его правильно: https://sopython.com/canon/93/render-string-in-jinja-to-javascript-variable/