Невозможно передать переменные jinja2 в javascript-фрагмент
Как передать данные jinja2 в javascript.
У меня есть адрес REST REST как /logs/<test_case_name>
Я пытаюсь использовать .getJSON()
для запроса вышеуказанного URL-адреса и, следовательно, хотел бы передать данные jinja2, у которого есть testcasename для функции .getJSON
.
пример кода:
<script type="text/javascript">
alert({{name}});
</script>
Это не работает.
Любые предложения, пожалуйста?
Ответы
Ответ 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/