javascript - 以数组形式访问javascript中的python列表

标签 javascript python flask

我的 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中测试列表相同的计数?

最佳答案

  1. 当您将变量插入模板 {{ 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, <built-in function any>],但这只是示例,永远不会起作用。

  2. 隐式转换为 flask 中存在的 javascript 对象 tojson过滤器:

    <script> var counts = {{ test|tojson }}; </script>
    

    因此,如果对象是 JSON 可序列化的,那么将渲染所有对象,否则模板引擎将引发异常。

  3. 您还可以将 javascript 代码发送到您的模板:

    from flask import json
    return render_template("sample.html",test=json.dumps(test))
    

    但这不是一个好方法,最好使用 tojson 过滤器,它也是 HTML 标记安全的。

  4. 我不喜欢在模板中混合任何 javascript 代码,并使用 ajax 拆分模板、javascript 和 javascript 数据。如果这种方法很难,我宁愿使用 tojson 过滤器。

关于javascript - 以数组形式访问javascript中的python列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038710/

相关文章:

Javascript - onClick 事件

python - 带有 python 数据框的有向图

python - 加载大 pickle 时,Flask 应用程序中的 Google App Engine gunicorn 工作超时?

JavaScript d3.csv() 给出错误 : read ECONNRESET

javascript - Node.js 异步并行不工作应该如何?

javascript - React 中的渲染对象属性

python - 将文件转换为字符串,然后重建该字符串并再次使其成为文件

python - systemd : `airflow.pid` vs `airflow-monitor.pid` 的 Airflow

python - Flask 和 nginx 服务器中的错误处理程序

python - Flask-reST 少使用分页或获得完整响应