老师下拉框的值,怎么取到?就是选中的值,然后提交到视图,我要取到

正在回答

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

1回答

同学,你好!下拉框的值多是由表单提交上来,在视图函数中使用request.form.get()获取相应表单的值,例如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">
          <option value="8am">上午8点</option>
          <option value="10am">上午10点</option>
        </select>
        <input type="submit" value="Submit"/>
    </form>
</body>
</html>

视图函数写法如下:

@app.route('/test')
def index():
    return render_template('demo.html')

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

访问http://127.0.0.1:5000/test ,选择下拉框并提交表单

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

提交表单会请求http://127.0.0.1:5000/demo

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

祝:学习愉快!

  • 若羲 提问者 #1
    flask_wtf FlaskForm
    wtforms StringField,SubmitField,TextAreaField,SelectField
    
    HOUR_CHOICES [(, ), (, )]
    (FlaskForm)hour (, ,HOUR_CHOICES)
        submit ()

    是wtf的这种??

    2021-12-24 14:40:32
  • 若羲 提问者 #2

    看这个图吧,上面粘贴的,显示被转义了

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

    2021-12-24 14:51:17
  • 好帮手慕燕燕 回复 提问者 若羲 #3

    同学,你好!老师上面的代码示例没有使用表单类,如果使用表单类,提交到视图,在视图函数中使用form.表单字段.data即可获取到表单数据,可参考以下写法

    表单模型:

    from flask_wtf import FlaskForm
    class TestForm(FlaskForm):
        HOUR_CHOICES = [('8am', '上午8点'), ('10pm', '下午10点')]
        hour = SelectField(u'Hour', coerce=str, choices=HOUR_CHOICES)
        submit = SubmitField('提交')

    视图函数:

    @app.route('/test')
    def test():
        form = TestForm()
        return render_template('demo.html', form=form)
    
    
    @app.route('/demo', methods=['POST'])
    def demo():
        form = TestForm()
        time_info = form.hour.data
        print(time_info)
        return time_info

    demo.html文件

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
            <form method="post" action="{{ url_for('demo') }}">
                <p>
                    时间: {{ form.hour }}
                </p>
                <input type="submit" value="Submit"/>
            </form>
        </body>
    </html>

    访问http://127.0.0.1:5000/test ,选择下拉框并提交表单

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

    提交表单之后,会跳转到http://127.0.0.1:5000/demo ,demo视图函数中,form.hour.data即可获取到提交过来的表单数据,页面显示如下

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

    祝:学习愉快!


    2021-12-24 15:41:27
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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