【问题标题】:How to pass a list of strings from flask python main function to javascript in html?如何将字符串列表从flask python main函数传递给html中的javascript?
【发布时间】:2017-08-06 20:35:48
【问题描述】:

我正在使用烧瓶建立一个网站。在 app.py 文件中,我计算了一些传递给 html 页面的统计信息。

@app.route('/')
def index():
    values = [10, 11, 7, 15, 19, 5, 7.5, 10.9]
    days= ["12/18/18","12/25/18","1/1/19","1/8/19","1/15/19","1/22/19","1/29/19","2/5/19"]

return render_template('index.html', days = days, values=values)

index.html中的javascript如下

var ctx = document.getElementById("lineChart");
var lineChart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: {{days}}
    datasets: {
      label: "All users",
      backgroundColor: "rgba(30,144,255, 0.31)",
      borderColor: "rgba(30,144,255, 0.7)",
      pointBorderColor: "rgba(30,144,255, 0.7)",
      pointBackgroundColor: "rgba(30,144,255, 0.7)",
      pointHoverBackgroundColor: "#fff",
      pointHoverBorderColor: "rgba(220,220,220,1)",
      pointBorderWidth: 1,
      data: {{values}}
    }
  },
});

我在 javascript 中测试了两个选项:

  1. 不工作(无法生成图表)

    labels: {{days}}
    data: {{values}}
    
  2. 如果我明确给出字符串列表就可以工作

    labels: ["12/18/18","12/25/18","1/1/19","1/8/19","1/15/19","1/22/19","1/29/19","2/5/19"]
    data: {{values}}    
    

似乎传递数字数组(本例中的值)很好,但传递字符串列表会带来麻烦。

您对解决这个问题有什么建议吗?
非常感谢!

【问题讨论】:

  • 这个answer 可能会有所帮助。
  • 是的,他们说的,你需要把它放在带有{{data | safe}}过滤器的模板中
  • 谢谢!当我在本地 Windows pc 中托管应用程序时,“安全”方法解决了这个问题!但是如果我使用 Apache2 在 Ubuntu 机器上部署它会失败。你知道可能是什么原因吗?
  • 我又添加了一个解决问题的方法:{{data | tojson |安全}}

标签: javascript python html flask mustache


【解决方案1】:

将 jinja 值放在双引号中。这样可行。写“{{values}}”而不是{{values}}。

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2017-08-04
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    相关资源
    最近更新 更多