【问题标题】:Flask: How to display tables in SQLite onto Flask?Flask:如何将 SQLite 中的表显示到 Flask 上?
【发布时间】:2021-07-23 09:36:05
【问题描述】:

我在 DB Browser SQLite 中创建了一个带有真实数据输入的表。如何将 SQLite 与烧瓶链接,以便表格显示在 html 中。我希望 html 部分显示与 DB Browser Sqlite 完全相同。

这是我的 app.py

@app.route('/viewrec', methods=['POST', 'GET'])
def viewrec():
    try:
        if request.method == 'POST':

            use = session['user'].get("name")
            ema = session['user'].get("preferred_username")
            depart = request.form['depart']
            type = request.form['type']
            uploadre = request.form['uploadre']
            amt = request.form['amt']
            description = request.form['description']

            if request.form.get("price"):
                price_checked = "Yes"
            else:
                price_checked = "No"

            conn = sql.connect(db_path)
            c = conn.cursor()
            c.execute('SELECT * FROM SubmitClaim')


            rows = c.fetchall()
            return render_template("viewpastclaim.html", rows=rows)
    except:
    # for row in rows:
    #     print(row)
    #
    # conn.close()
        return render_template('viewpastclaim.html')

这是我的 viewpastclaim.html 我试图从 App.py 调用各种变量并将它们与 rows['Name']

一起使用
<form action="/viewrec"  METHOD="POST" >
<!-- Generate all the claim content -->
<table style=" font-family: arial, sans-serif;
       width: 60%;
       border: 1px solid black;
       margin-left:500px;
       margin-top: 100px;
       text-align: center;
       padding:20px;">

    <tr>
        <th class="type">Name</th>
        <th>Email</th>
        <th>Department</th>
        <th>ClaimType</th>
        <th>UploadReceipt</th>
        <th>ClaimAmount</th>
        <th>checkbox</th>
        <th>ClaimDescription</th>

    </tr>
    {% for rows in SubmitClaim %}
    <tr>
        <td>rows['Name']</td>
        <td>rows['Email']</td>
        <td>rows['Deparment']</td>
        <td>rows['ClaimType']</td>
        <td>rows['UploadReceipt']</td>
        <td>rows['ClaimAmount']</td>
        <td>rows['checkbox']</td>
        <td>rows['ClaimDescription']</td>
    </tr>
    {% endfor %}

</table>

<!-- View all the claims -->
 <button type="submit", class="viewall-button" name="save", value="save">View All</button>
</form>

如果您能够解决它们,请在下方留言。感谢您的宝贵时间。

【问题讨论】:

    标签: python sqlite flask


    【解决方案1】:

    您必须将 Python 变量包装在 {{ }} 中才能以 HTML 格式显示它们。您的代码中也有一些错误。你必须用行替换'SubmitClaim',因为你在你的python函数中传递了它。所以正确的代码是:

    {% for row in rows %}
    <tr>
        {% for data in row %}
        <td>{{ data }}</td>
        {% endfor %}
    </tr>
    {% endfor %}
    

    【讨论】:

    • 嗨 user3510806,我仍然无法从 SQLite 显示表格。
    • 你从哪里得到 {{data}}?
    • 通过遍历行,我们创建了一个名为“data”的新变量,它将打印出信息,直到嵌套的 for 循环结束。
    • html中的表仍未从数据库中填充
    【解决方案2】:

    我认为这样的事情应该可行。您将信息提供给“行”内的模板,而不是“SubmitClaim”内的模板

        <tr>
            <th class="type">Name</th>
            <th>Email</th>
            <th>Department</th>
            <th>ClaimType</th>
            <th>UploadReceipt</th>
            <th>ClaimAmount</th>
            <th>checkbox</th>
            <th>ClaimDescription</th>
    
        </tr>
        {% for row in rows %}
        <tr>
            <td>row['Name']</td>
            <td>row['Email']</td>
            <td>row['Deparment']</td>
            <td>row['ClaimType']</td>
            <td>row['UploadReceipt']</td>
            <td>row['ClaimAmount']</td>
            <td>row['checkbox']</td>
            <td>row['ClaimDescription']</td>
        </tr>
        {% endfor %}
    

    如果您仍然无法使用它,我建议您使用 SQL-Alchemy 来管理数据库。这应该会让一切变得更容易。

    【讨论】:

    • 嗨@Robert,它仍然无法正常工作。无论如何感谢您的帮助
    猜你喜欢
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多