如何使用 Javascript 遍历 Python/Flask 中的项目列表?
How to iterate over a list of items from Python/Flask using Javascript?
我正在使用 HTML/JS/Python/Flask 创建一个图表,这个折线图的标签应该来自 Python 中的列表,然后我会在 Javascript 上使用它.
到目前为止,我无法成功地遍历 Javascript 中的那个列表,我在 HTML.
中得到了 4 次相同的字符串
我使用的代码与此类似:
start.py
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>
有人知道如何正确处理这个问题以便我得到正确的结果吗?
在 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>
您可能已经注意到,在 Javascript 方面,我是一个完全的初学者,做了一些研究,我发现我也可以在 Javascript 中进行切片和拆分。所以我用这两种方法解决了我的问题。
提供有关我所做的更多详细信息,{{data}} 作为单个字符串传递给 Javascript,如 '['ABC','DEF','GHI','JKL']',如果您将此字符串作为控制台输出读取,它会显示:
['ABC', 'DEF', 'GHI', 'JKL']
为了解决这个问题,我首先将字符串切片:
flask_data = '{{data}}';
temp_array = flask_data.slice(6,-6);
所以我得到了这个结果:
ABC', 'DEF', 'GHI', 'JKL
然后我使用以下子字符串拆分字符串:'', '',如下所示:
array = temp_array.split('', '');
结果我得到了我需要的数组:
['ABC','DEF','GHI','JKL']
我正在使用 HTML/JS/Python/Flask 创建一个图表,这个折线图的标签应该来自 Python 中的列表,然后我会在 Javascript 上使用它.
到目前为止,我无法成功地遍历 Javascript 中的那个列表,我在 HTML.
中得到了 4 次相同的字符串我使用的代码与此类似:
start.py
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>
有人知道如何正确处理这个问题以便我得到正确的结果吗?
在 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>
您可能已经注意到,在 Javascript 方面,我是一个完全的初学者,做了一些研究,我发现我也可以在 Javascript 中进行切片和拆分。所以我用这两种方法解决了我的问题。
提供有关我所做的更多详细信息,{{data}} 作为单个字符串传递给 Javascript,如 '['ABC','DEF','GHI','JKL']',如果您将此字符串作为控制台输出读取,它会显示:
['ABC', 'DEF', 'GHI', 'JKL']
为了解决这个问题,我首先将字符串切片:
flask_data = '{{data}}';
temp_array = flask_data.slice(6,-6);
所以我得到了这个结果:
ABC', 'DEF', 'GHI', 'JKL
然后我使用以下子字符串拆分字符串:'', '',如下所示:
array = temp_array.split('', '');
结果我得到了我需要的数组:
['ABC','DEF','GHI','JKL']