我正在尝试将一个列表从python flask应用程序传递到HTML中的脚本标记内部。数据正在成功地移动到javascript中,但是,它没有被解释为我最初创建的列表。取而代之的是,整个列表被转换成一个字符数组,有效地将我的所有值分割成它们的组成部分。如何保持列表的完整性
{% block page_content %}
{{dates}}
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.4/dist/Chart.min.js"></script>
<canvas id="myChart" width="400" height="250"></canvas>
<script type="text/javascript">
var ctx = document.getElementById('myChart');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: '{{dates|tojson|safe}}',
datasets: [{
label: 'Stonk Price',
data: '{{prices|tojson|safe}}',
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
</script>
</div>
<script src="script.js"></script>
</body>
</html>
{% endblock %}
我的烧瓶应用程序看起来像
@app.route('/', methods=['GET','POST'])
def index():
dates, prices = dayMonthCloseLists("AAPL") # returns 'mm-dd-yyyy' string and float objects as two lists
return render_template('index.html', dates=dates, prices=prices)
原始列表在x轴上被分割为字符的示例:
我对此非常陌生,所以我不确定是否有一个简单的语法解决方案
我以前写过一篇关于如何将chartjs与flask结合使用的文章。目的是避免使用Jinja2表达式构建JS代码。我已经为您的用例创建了a branch on that repo
我创建了两个端点,一个返回JSON数据,另一个用图表呈现索引页面。JSON数据是obtained by the fetch API, then pushed to the chart config object。这避免了将Jinja2语法与javascript混合使用的需要
{}包括:
一个
conv
函数,用于将日期格式更改为矩JS支持的异构格式:然后是一个
data
函数,它构建了一个与前端兼容的dict:我已经模拟了
dates
和prices
,但您只需使用dayMonthCloseLists
函数加载它们:上面代码中的
sample_list
如下所示:然后,我将上述路由的url作为
CHART_ENDPOINT
传递给模板:然后可以将其包括在
index.html
模板中,如:注意,此模板中的
<head>
部分还包括来自cdnjs的moment.min.js
库,这是日期转换所必需的,以及chart.min.js
包含您可以查看文件
flask_chart.js
,该文件在所附的repo中处理所有这一切。最终结果是一个类似以下的图表:相关问题 更多 >
编程相关推荐