我将表值数据从 ibm_db 带到 Flask。
@app.route("/unplanned_outage", methods=['GET', 'POST'])
def unplanned_outage():
global conn
ibm_db_conn = ibm_db.connect("DATABASE=bludb;HOSTNAME=hostname;PORT=1234;SECURITY=SSL;;UID=uid;PWD=pwd;", '', '')
conn = ibm_db_dbi.Connection(ibm_db_conn)
cur = conn.cursor()
select="select * from tools"
cur.execute(select)
tools = cur.fetchall()
print("Query results:\n")
print(tools,end="\n")
cur.close()
return render_template(r'page.html', tools=tools)
数据库正在连接并按预期在终端中打印查询结果。 我正在将此值添加到 html 下拉列表中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js" ></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<title>Home Page</title>
</head>
<body>
<form class="row g-3" style="margin: auto; width: 80%; padding: 30px;">
<div class="col-md-8">
<label for="inputState1" class="form-label">Tools</label>
<select id="inputState1" class="form-select">
<option selected></option>
{% for row in tools %}
<option value='{{row.id}}'>{{row.tools}}</option>
{% endfor %}
</select>
</div>
</form>
</body>
</html>
但是这些值没有显示在 html 页面中。
没有错误信息。请帮助我如何让这些值在 html 中呈现。非常感谢!
编辑: 根据要求,这是打印语句的输出。它正在终端中打印字典列表。
我是烧瓶新手,所以请耐心等待。我应该添加任何js代码以便它帮助flask渲染成html吗?
因此,当我使用单个字符串和列表将静态值从 Flask 发送到 HTML 时,它会显示在 html 页面上。
我意识到表中没有 id 的单列被打印为列表中的元组,如下所示 [('ABC',), ('DEF',), ('GHI',)]
所以我尝试了一种解决方法并尝试在列表中调整它们
tools1=[]
for x in tools:
tools1.append(''.join(x))
print(tools1)
然后给我输出为 ['ABC','DEF','GHI']
当我将它们传递到 HTML 中时,它在下拉框中显示得很好。