Flask | Jinjia2 | Javascript:将Flask模板变量传递给Javascript - javascript

将变量从Flask模板传递到Javascript文件的最佳方法是什么?这是我的代码

我的webapp中有一个简单的视图:

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

我有一个模板化的HTML文件,如下所示:

{% extends "base.html" %}

{% block title %} Bar View {% endblock %}

{% block content %}

{% with calendarMap=calendarMap %}
    {% include "buttons.html" %}
{% endwith %}

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="/static/css/d3.tip.v0.6.3.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<!-- Custom codes for d3 plotting -->
<link href="/static/css/bars.css" rel="stylesheet">
<script> var calendarMap = {{ calendarMap|tojson }}; </script>
<script src="/static/bars.js"></script>

{% endblock %}

先前的答案告诉我,我可以将变量json化为JSON对象,然后就可以使用它了。但是,我想在bars.js内使用calendarMap吗?但是我遇到了一些范围界定问题(即,bars.js无法识别此calendarMap),我应该怎么做呢?

javascript大神给出的解决方案

好吧,也许为时已晚,但是我们开始吧。

当您使用嵌入HTML代码中的JavaScript代码时,此脚本将与HTML一起呈现。因此,在JavaScript中引用的任何变量(例如Flask变量)都可以在呈现的页面中找到。

当您使用以HTML代码链接的外部JavaScript文件时,在呈现HTML之前,该文件的代码已经存在。在某些情况下,我可能会说大多数,您不是此文件的所有者。因此,不会渲染JS文件中引用的任何变量。

您可以通过JS代码将此变量放入HTML中,并使用来自外部JS文件的函数来使用此数据。

或者,您可以在渲染模板之前渲染此JS文件并使用它。但是我强烈建议不要使用这种方法。

Flask to Dygraph-如何传递数据? - javascript

如果我有一个简单的Python时间数据系列,例如:graphdata = [] graphdata.append( [(datetime.date(2008, 5, 7)),75]) graphdata.append([(datetime.date(2008, 5, 8)), 85]) graphdata.append([(datetime.date(200…

在散景中显示裁剪的图像 - javascript

我正在以散景的形式在图中显示图片,并且正在使用BoxSelectTool绘制矩形。box_select = BoxSelectTool(callback=callback) p2 = figure(x_range=(0,700), y_range=(0,500),plot_width=1100,plot_height=1100,tools=[box_sele…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

带有参数FlasK / Rest API的GET请求 - python

我正在尝试执行GET请求,该请求应根据设置的参数从数据库中打印特定行。参数应该是一门课程的名称,我希望它从所选课程中获取所有数据。将其解释为SQL查询可能会更容易一些。该查询可能看起来像这样“ SELECT * FROM courselist WHERE course ='D0024E';”那里的“课程”。我已经设法完成fetchall()并从特定表中接收了…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…