Frasco | Jinjia2 | Javascript: Pasando la variable de la plantilla Frasco a Javascript

¿Cuál es la mejor manera de pasar una variable de una plantilla de Flask al archivo Javascript? Aqui esta mi codigo

Tengo una vista simple en mi aplicación web:

@webapp.route('/bars') def plot_d3_bars(): return render_template("bars.html", calendarMap = calendarMap) 

Tengo un archivo HTML con plantilla que se parece a esto:

 {% extends "base.html" %} {% block title %} Bar View {% endblock %} {% block content %} {% with calendarMap=calendarMap %} {% include "buttons.html" %} {% endwith %}       var calendarMap = {{ calendarMap|tojson }};   {% endblock %} 

Las respuestas anteriores me dijeron que solo podía jsonificar la variable en un objeto JSON y podré usarla. Sin embargo, quiero usar calendarMap dentro de bars.js? pero estoy teniendo algunos problemas de scope (es decir, bars.js no ha reconocido este calendario), ¿qué debo hacer en su lugar?

Bueno, tal vez sea demasiado tarde, pero aquí vamos.

Cuando utiliza un código JavaScript incrustado en el código HTML, este script se procesará junto con HTML. Por lo tanto, cualquier variable a la que se haga referencia en JavaScript, como una variable de Flask, estará disponible en la página representada.

Cuando utiliza un archivo JavaScript externo vinculado en un código HTML, su código ya existe, antes de que se genere el HTML. En algunos casos, puedo decir que la mayoría de ellos no es el propietario de este archivo. Así que cualquier variable referenciada en el archivo JS no será procesada.

Puede poner esta variable en HTML, a través del código JS, y consumir estos datos con funciones de un archivo JS externo.

O puede renderizar este archivo JS, antes de renderizar la plantilla, y usarlo. Pero recomiendo encarecidamente no utilizar este enfoque.