我在我的 Flask 應用程式中遇到了一個非常奇怪的問題,試圖用 Js 腳本注入一個模板變數,我真的不明白問題是什么,所以它就在這里。
我特別想注入兩個變數:一個數字串列和一個字串串列(相同長度),以便我可以在圖上chart.js繪制資料。
問題是,當注入單個變數(數字串列)時,頁面呈現餅圖時沒有錯誤,但是當我添加第二個變數(字串串列)時,頁面變為空白。
這是JS片段:
<div class='chart'>
<canvas id="myChart" width="400" height="400"></canvas>
<script type="text/javascript">
var data = {{values}};
var labels = {{labels}};
const ctx = document.getElementById('myChart').getContext('2d');
const myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{
labels: '# of Votes',
data: data,
backgroundColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255,1)',
'rgba(255, 159, 64, 1)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
和燒瓶:
@app.route('/test')
def test():
screener = Signals()
major_news = screener.major_news()
distribution = screener.industry_distribution(major_news)
return render_template('test.html', labels=[str(key) for key in distribution], values=[distribution[key] for key in distribution])
請記住,變數都已被檢查,并且它們都包含它們應該包含的內容。
在 JS 腳本中,labels變數什么都不做,但仍然會在宣告后立即拋出錯誤。
謝謝你的幫助。
uj5u.com熱心網友回復:
參考這個 SO 答案https://stackoverflow.com/a/48237270/17798307
Flask 為此提供了 Jinja 過濾器:tojson 將結構轉儲為 JSON 字串并將其標記為安全,以便 Jinja 不會自動轉義它。
請嘗試像這樣宣告您的變數:
var labels = {{labels | tojson}};
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/399013.html
標籤:javascript Python 烧瓶 图表.js
上一篇:公開暴露API端點
