烧瓶中的下拉框不显示值

问题描述 投票:0回答:1

我将表值数据从 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 页面中。

dropdown looking like this

没有错误信息。请帮助我如何让这些值在 html 中呈现。非常感谢!

编辑: 根据要求,这是打印语句的输出。它正在终端中打印字典列表。 print output

我是烧瓶新手,所以请耐心等待。我应该添加任何js代码以便它帮助flask渲染成html吗?

python flask db2
1个回答
0
投票

因此,当我使用单个字符串和列表将静态值从 Flask 发送到 HTML 时,它会显示在 html 页面上。

我意识到表中没有 id 的单列被打印为列表中的元组,如下所示 [('ABC',), ('DEF',), ('GHI',)]

所以我尝试了一种解决方法并尝试在列表中调整它们

tools1=[]
for x in tools:
    tools1.append(''.join(x))
print(tools1)

然后给我输出为 ['ABC','DEF','GHI']

当我将它们传递到 HTML 中时,它在下拉框中显示得很好。

© www.soinside.com 2019 - 2024. All rights reserved.