lbfeng
V2EX  ›  Flask

request.form 为空的错误。

  •  
  •   lbfeng · Nov 6, 2015 · 3991 views
    This topic created in 3855 days ago, the information mentioned may be changed or developed.

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

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

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

    ```python

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

    ```

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

    BTW, 习惯用 aaa.get('bbb') 来代替 aaa['bbb'] 的写法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2130 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 16:13 · PVG 00:13 · LAX 09:13 · JFK 12:13
    ♥ Do have faith in what you're doing.