V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lbfeng
V2EX  ›  Flask

request.form 为空的错误。

  •  
  •   lbfeng · 2015-11-06 12:25:25 +08:00 · 3242 次点击
    这是一个创建于 3094 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两个 form 在一个 page 中。

    <form action="/X/Y" method="post" class="form" role="form">
        <!--几个有 validator 的 input-->
        <input id="form1-submit" name="form1-submit" type="submit" value="Update1">
    
    <form action="/X/Y" method="post" class="form" role="form">
        <!--几个有 validator 的 input-->
        <input id="form2-submit" name="form2-submit" type="submit" value="Update2">
    

    想通过 request.form['form1_2-submit']来判断提交的是哪个 form 。但不知道为什么 request.form 为空,只能能得到 400 bad 。

    4 条回复    2015-11-06 19:12:22 +08:00
    Kilerd
        1
    Kilerd  
       2015-11-06 13:21:44 +08:00   ❤️ 1
    is_form1 = request.form.get('form1-submit', None)
    if(is_form1):
    # do with Form1
    else:
    # do with Form2
    lbfeng
        2
    lbfeng  
    OP
       2015-11-06 13:39:37 +08:00
    @Kilerd 问题解决了。请问为什么 request.form['form1_2-submit'],会返回 400 呢?
    killpanda
        3
    killpanda  
       2015-11-06 14:03:30 +08:00   ❤️ 1
    通常用 request.form.get(key) 会比 request.form[key] 更好,因为后者如果没有这个 key ,会抛异常。(印象中,不一定对
    Kilerd
        4
    Kilerd  
       2015-11-06 19:12:22 +08:00   ❤️ 1
    @lbfeng error 400 的意思是 执行语句出错。导致程序无法执行

    当提交 form2 的时候 form1 无法读取。

    你在执行的时候用 debug 模式就会报告出什么错了

    ```python

    app.run(host='0.0.0.0', debug=True)

    ```

    然后再去执行你的代码,就知道 400error 到底出现在哪里

    BTW, 习惯用 aaa.get('bbb') 来代替 aaa['bbb'] 的写法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2896 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:31 · PVG 19:31 · LAX 04:31 · JFK 07:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.