我的 flask views.py中有这个

    def showpage():
      ...
      test = [1,2,3,4,5,6]
      return render_template("sample.html",test=test)

我的样本.html中有这个
    <script> var counts = {{test}}; </script>

这给了我一个空的计数变量。如何获得与python中的测试列表相同的计数?

最佳答案

  • 当您将变量插入模板{{ test }}时,它将采用对象表示形式。对于int [1,2,3,4,5,6]的列表,它将被呈现为[1, 2, 3, 4, 5, 6],因此它是有效的javascript数组,但是此方法对于没有类似javascript的表示形式的安全复杂对象不是安全的,例如,test = [1,2,3,4,5,any]将呈现为[1, 2, 3, 4, 5, &lt;built-in function any&gt;],但这仅是示例,将永远无法使用。
  • 要隐式转换为flask中的javascript对象,可以使用 tojson 过滤器:
    <script> var counts = {{ test|tojson }}; </script>
    

    因此,如果对象是JSON可序列化的,则将全部呈现,否则模板引擎将引发异常。
  • 您还可以将javascript代码发送到模板:
    from flask import json
    return render_template("sample.html",test=json.dumps(test))
    

    但这不是一个好方法,最好使用也是HTML标记安全的tojson过滤器。
  • 我更喜欢不要在模板中混合任何javascript代码,也不要将模板,javascript和javascript数据与ajax混合使用。如果这种方法很难,我宁愿使用tojson过滤器。
  • 关于javascript - 以数组的形式访问javascript中的python列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23038710/

    10-09 06:36
    查看更多