Similar question不能解决我的问题。
我有一个Flask应用程序,该应用程序从数据库读取并使用DB数据呈现HTML模板。我正在尝试处理从数据库获得的值,然后再将其发送到HTML模板,这是行不通的。
Python代码:
@app.route('/pilot', methods=['GET'])
def form_view():
result = {}
# query DB and get cursor
numQuestions = 0
for row in cursor:
row.pop('_id', None) # delete the key and add modified key back
row['_id'] = row['stage'][-1] # get only last char- eg, "1" from "stage1", "2" from "stage2" and so on
print(row['_id'])
result[numQuestions] = row
numQuestions += 1
return render_template("form.html", count=numQuestions, result=result, debug=app.debug)
在终端上运行时的输出符合预期:
1
1
1
2
2
2
form.html的Jinja2片段:
{% for row in result[row_num]['scrutiny_stage'] %}
{{ row['_id'] }}
{% endfor %}
浏览器上的输出:
stage1 stage1 stage1 stage2 stage2 stage2 stage2
谁能帮助我了解我在这里做错了什么,以及如何获取在Python代码中设置的变量的正确值以显示在Flask呈现的HTML模板中?
谢谢。
答案 0 :(得分:0)
感谢大家的提示,即使我不能共享所有上下文(因为我必须保护专有信息),它们还是有帮助的。我设法通过多个步骤解决了这个问题:
numQuestions = 0
for row in cursor:
for line in row['scrutiny_stage']:
row['stage'] = line['_id']
result[numQuestions] = row
numQuestions += 1
{% for row in result.values() %}
{{ row['stage'] }}
{% endfor %}
现在,我在终端机和浏览器中得到了相同的值。