web-dev-qa-db-fra.com

Impossible de passer les variables jinja2 dans l'extrait de code javascript

Comment passer des données jinja2 en javascript. J'ai un Flask REST url as /logs/<test_case_name> J'essaie d'utiliser .getJSON() pour interroger l'URL ci-dessus et donc serait voulez passer les données jinja2 qui ont le nom testcasename à la fonction .getJSON.

exemple de code:

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

Ça ne marche pas. Des suggestions s'il vous plait?

31
deeshank

autre que l'encapsulation de la variable dans une chaîne, une alternative est jquery for profit:

c'est généralement une mauvaise idée de mélanger la langue du modèle avec javascript. Une alternative serait d'utiliser html comme proxy - stocker le nom dans un élément comme ça

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

puis dans le javascript faire

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

cela a l'avantage de:

  • javascript n'est plus lié à la page .html
  • jquery contraint les données implicitement
44
rikAtee

Essayez avec des guillemets:

alert("{{name}}");
50
ndpu

Je sais que c'est un sujet un peu ancien, mais comme il attire beaucoup de vues, je suppose que certaines personnes recherchent toujours une réponse.

Voici la façon la plus simple de le faire:

var name = {{name|tojson}};

Il 'analysera' quel que soit le 'nom' et l'affichera correctement: https://sopython.com/Canon/93/render-string-in-jinja-to-javascript-variable/

2
mr_info

Voici comment je l'ai fait

Mon élément html

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

Mon élément de script

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

Voir . Data () documentation pour plus

1
Suraj Nath