从零开始写代码 2024-02-06 21:20 采纳率: 69.2%
浏览 10
已结题

html flask无法显示数据库中的数据的问题

先展示问题

img

没有刷新出数据,网页也没有报错(那个错误不影响)

该页面的源码
show_user.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数据库</title>
    <style>
        .t1{
    width: 30px;
    height: 30px;
    margin: 0 auto;
    border: 1px black solid;
}
    </style>
<!--    <link rel="stylesheet" href="C:\Users\范先生\Desktop\html web\bootstrap-3.4.1-dist\css\bootstrap.css">-->
</head>
<body>
    <h1>用户列表</h1>
    <table class="t1">
        <thead>
            <tr>
                <td>ID</td>
                <td>姓名</td>
                <td>密码</td>
                <td>手机号</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>XXX</td>
                <td>12312313</td>
                <td>333333333333</td>
            </tr>
        {% for item in data %}
            <tr>
                <td>{{item.id}}</td>
                <td>{{item.username}}</td>
                <td>{{item.password}}</td>
                <td>{{item.mobile}}</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
<!--    <script src="C:\Users\范先生\Desktop\html web\bootstrap-3.4.1-dist\js\jquery-3.7.1.js"></script>-->
<!--    <script src="C:\Users\范先生\Desktop\html web\bootstrap-3.4.1-dist\js\bootstrap.js"></script>-->
</body>
</html>


数据库的数据

img

主程序代码(这个应该没有问题)
main.py

from flask import app,Flask,render_template,redirect,request
import pymysql
app=Flask(__name__)
@app.route('/add/user',methods=['GET','POST'])
def add_user():
    if request.method == 'GET':
        return render_template('add_user.html')
    username = request.form.get('user')
    password = request.form.get('pwd')
    mobile = request.form.get('mobile')
    conn=pymysql.connect(host='localhost',user='root',password='123',charset='utf8',db='unicom')
    cursor=conn.cursor()
    sql="insert into admin(username,password,mobile) values(%s,%s,%s)"
    cursor.execute(sql,(username,password,mobile))
    conn.commit()
    cursor.close()
    conn.close()
    return '添加成功'
    # 展示数据库的数据
@app.route('/show/user')
def show_user():
    conn=pymysql.connect(host='localhost',user='root',password='123',charset='utf8',db='unicom')
    cursor=conn.cursor()

    sql="select * from admin"
    cursor.execute(sql)
    # conn.commit()
    data=cursor.fetchall()
    for row in data:
        print(row)
    cursor.close()
    conn.close()
    return render_template('show_user.html',data=data)
    # print(data)
if __name__ == '__main__':
    app.run()

添加成员信息的界面(这个也没有问题)
add_user.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>添加用户</h1>
    <form method="post" action="/add/user">
        <input type="text" name="user" placeholder="请输入用户名">
        <input type="text" name="pwd" placeholder="请输入密码">
        <input type="text" name="mobile" placeholder="请输入手机号">
        <input type="submit" value="提 交">
    </form>
</body>
</html>

该程序实现的功能就是动态的向数据库中添加成员信息并展示在前端

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-06 21:21
    关注

    引自免费微信小程序:皆我百晓生

    从您提供的代码片段来看,您的Flask应用在show_user路由中成功获取了数据库中的所有数据,并将其存储在变量data中。然而,在HTML模板show_user.html中,虽然有一个循环用于遍历并显示data中的每一项,但在实际渲染网页时并没有显示出数据库的数据。

    要解决这个问题,请确保传递给render_template函数的上下文变量正确地被模板识别和使用。以下是修改后的main.py代码,重点在于show_user函数:

    from flask import Flask, render_template, redirect, request
    
    # ... 其他代码不变 ...
    
    @app.route('/show/user')
    def show_user():
        # 连接数据库与查询部分保持不变 ...
        
        data = cursor.fetchall()
        cursor.close()
        conn.close()
    
        # 确保将查询结果传给模板
        return render_template('show_user.html', data=data)
    
    # ... __name__ == '__main__' 部分保持不变 ...
    

    同时,确认show_user.html模板正确处理传递过来的data变量:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <!-- ... 头部样式与meta标签不变 ... -->
    </head>
    <body>
        <h1>用户列表</h1>
        <table class="t1">
            <thead>
                <tr>
                    <td>ID</td>
                    <td>姓名</td>
                    <td>密码</td>
                    <td>手机号</td>
                </tr>
            </thead>
            <tbody>
                <!-- 删除静态示例行,由for循环动态生成 -->
                {% for item in data %}
                    <tr>
                        <td>{{ item.id }}</td>
                        <td>{{ item.username }}</td>
                        <td>{{ item.password }}</td>
                        <td>{{ item.mobile }}</td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    </body>
    </html>
    

    经过上述调整后,当访问 /show/user 路由时,show_user.html 模板应该能够正确显示从数据库中获取的数据。如果仍然无法正常显示,请检查数据库连接是否成功以及查询结果是否包含预期的数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月20日
  • 已采纳回答 5月20日
  • 创建了问题 2月6日