如何使用Javascript迭代Python/Flask中的项目列表



我正在使用HTML/JS/Python/Flask创建一个图,这个折线图的标签应该来自Python中的列表,然后我会在Javascript上使用它。

到目前为止,我还无法在Javascript中成功地迭代该列表,我在HTML中得到了4倍相同的字符串。

我使用的代码与此类似:

启动

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/', methods = ['GET','POST'])
def home():
data = ['ABC','DEF','GHI','JKL']
return render_template('index.html', data = data, len = len(data))
if __name__ == '__main__':
app.run(debug=True)

index.html

<body>    
<p id='test'></p>
<script>
let text = '';
for (i=0; i<'{{len}}'; i++){
text += '{{data | tojson}}[i]' + '<br>'
}
console.log(text)
document.getElementById('test').innerHTML = text;
</script>
</body>

我把它作为输出:

['ABC','DEF','GHI','JKL'][i]
['ABC','DEF','GHI','JKL'][i]
['ABC','DEF','GHI','JKL'][i]
['ABC','DEF','GHI','JKL'][i]

我希望得到这个:

ABC
DEF
GHI
JKL

发送到Javascript的数据是以文本形式发送的,而不是以列表形式发送的

text += '{{data | tojson}}[i]' + '<br>'

对此:

text += '{{data | tojson}}'[i] + '<br>'

输出变为:

[
"
A
B

控制台输出为:

[<br>"<br>A<br>B<br>

有人知道如何正确处理这件事,这样我就能得到正确的结果吗?

正如您可能已经注意到的,当谈到Javascript时,我是一个完全的初学者,经过一些研究,我发现我也可以在Javascript中进行切片和分割。所以我用这两种方法解决了我的问题。

提供了关于我所做的更多细节,{{data}}作为单个字符串传递给Javascript,如"[ABC','DEF','GHI','JKL']",如果您将此字符串作为控制台输出读取,它将显示:

[&#39;ABC&#39;, &#39;DEF&#39;, &#39;GHI&#39;, &#39;JKL&#39;]

为了解决这个问题,我首先用对字符串进行切片

flask_data = '{{data}}';
temp_array = flask_data.slice(6,-6);

所以我得到了这个结果:

ABC&#39;, &#39;DEF&#39;, &#39;GHI&#39;, &#39;JKL

然后,我使用以下子字符串拆分字符串:",",如下所示:

array = temp_array.split('&#39;, &#39;');

结果我得到了我需要的阵列:

['ABC','DEF','GHI','JKL']

在HTML 中尝试

<body>    
<p id='test'></p>
<script>
let text = '';
for (i=0; i<'{{len}}'; i++){
text += '{{data[i]}}' + '<br>'
}
console.log(text)
document.getElementById('test').innerHTML = text;
</script>
</body>

或者您也可以传递字符串而不是数组。

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/', methods = ['GET','POST'])
def home():
data = ['ABC','DEF','GHI','JKL']
return render_template('index.html', data = "n".join(data), len = len(data))
if __name__ == '__main__':
app.run(debug=True)

然后在HTML中,你可以打印这个连接的字符串

<body>    
<p id='test'></p>
<script>
document.getElementById('test').innerHTML = {{data}};
</script>
</body>

最新更新