400 Bad Request(Flask + html)

时间:2016-06-11 19:53:50

标签: python html flask

当我尝试运行我的Flask项目时,我一直收到400 Bad Request。

我必须使用Flask和HTML做一个项目,它应该是一个小组项目,因此成员必须学习它的不同部分然后收集所有内容。可悲的是,我的小组'没有做任何事情

这是我的代码:

烧瓶

app = Flask(__name__, static_url_path="")


@app.route('/', methods=['POST','GET' ]) #1 - Login e criar conta

def PagInicio():
    button = request.form["button"]
    if request.method == 'POST':
        if button == "login":
            return render_template("Princ.html")
        elif button =="criar":
            return render_template("Criar.html")
        else:  
            return render_template("Inicio.html")  

    return render_template("Inicio.html")

HTML:

 <div class="col_12">
  </div>

    <!-- Tab 3 - Perfil -->
    <div id="tabr3" class="tab-content">
        <div class="grid">

            <div class="col_2"></div>
            <div class="col_8">   
                <form class="vertical" method="POST" action="/">
                <fieldset>


                    <div class="grid">


                        <div class="col_6">
                        <label for="usuario">Usuário</label>
                        <input id="usuario" name="usuario" type="text" />
                        </div>

                        <div class="col_6">
                        <label for="senha">Senha</label>
                        <input id="senha" name="senha" type="password" />
                        </div>

                        <div class="col_12 center">
                        <button class="medium" value="login"</i> Login</button>
                        </div>              

                                    <div class="col_12 center">
                                    <button class="medium" value="criar"</i> Criar</button>
                                    </div>

                </form>
            </div>
            <div class="col_2"></div>
        </div>
    </div>

</div>
<div class="col_1"></div>
</div>

1 个答案:

答案 0 :(得分:2)

您正在尝试访问request.form字典,始终

button = request.form["button"]

如果表单中没有此类值,则会引发400响应错误。当您收到GET请求时总是request.form只有在有效格式的POST数据时才会填充。

只有在您确认有POST请求时才尝试访问该按钮:

def PagInicio():
    if request.method == 'POST':
        button = request.form["button"]
        if button == "login":
            return render_template("Princ.html")
        elif button =="criar":
            return render_template("Criar.html")
        else:  
            return render_template("Inicio.html")  

    return render_template("Inicio.html")

接下来,您实际上没有任何表单元素名为 button。您有button 表单元素但没有名称。为所有按钮提供相同的name属性,从而改变值属性:

<div class="col_12 center">
<button class="medium" name="button" value="login"> Login</button>
</div>              

<div class="col_12 center">
<button class="medium" name="button" value="criar"> Criar</button>
</div>

请注意,您也使<button标记格式不正确。