下拉框的值,从数据库如何取出来,又怎么在html中展示?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!如果需要从数据库中取值,就不需要使用TestForm表单类来定义该数据了,在视图函数中通过类对象直接查询即可,然后在将查询结果传给html,使用flask模板语法进行渲染,可参考下面的方法

数据模型类:

class UserTime(db.Model):
    __tablename__ = 'user_time'
    id = db.Column(db.Integer, primary_key=True)
    u_time = db.Column(db.String(64), nullable=False)
    desc = db.Column(db.String(64), nullable=False)

对应数据库user_time表数据如下:

https://img1.sycdn.imooc.com//climg/61c6d4c509097c4103550170.jpg

视图函数:

@app.route('/test')
def test():
    time_obj = UserTime.query.all() # 查询user_time表
    return render_template('demo.html', time_obj=time_obj)


@app.route('/demo', methods=['POST'])
def demo():
    time_info = request.form.get('time_opt')
    print(time_info)
    return time_info

demo.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form method="post" action="{{ url_for('demo') }}">
            时间:
            <select name="time_opt">
                {% for ut in time_obj %}
                  <option value="{{ ut.u_time }}">{{ ut.desc }}</option>
                {% endfor %}
            </select>
            <input type="submit" value="Submit"/>
        </form>
    </body>
</html>

访问http://127.0.0.1:5000/test ,点击下拉框,显示如下

https://img1.sycdn.imooc.com//climg/61c6d6250966d1b703080136.jpg

提交表单之后,会跳转到http://127.0.0.1:5000/demo ,demo视图函数中,使用request.form.get('time_opt')获取提交过来的数据,页面显示如下

https://img1.sycdn.imooc.com//climg/61c6d6a5095dcf6303850113.jpg

祝:学习愉快!

  • 若羲 提问者 #1

    嗯,我就是这样实现的,想看看如果用表单类,怎么做……,好的 谢谢

    2021-12-25 17:00:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师