【问题标题】:Flask routing problem in my app: bad request 400我的应用程序中的烧瓶路由问题:错误请求 400
【发布时间】:2020-12-07 13:55:37
【问题描述】:

这里我是针对希望购买一些东西的客户的详细信息,他必须填写这些字段才能购买一些产品。 但是当我路由到链接时,弹出以下错误
当我路由到详细信息时出现此错误我收到如下所述的错误如何解决此问题 werkzeug.exceptions.BadRequestKeyError: 400 Bad Request:浏览器(或代理)发送了一个服务器无法理解的请求。 KeyError:'电子邮件'

details.html this is a html file
    
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Details</title>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="{{url_for('static', filename='css/landing_page.css')}}">
    <link rel="stylesheet" href="{{url_for('static', filename='css/login.css')}}">
</head>
<body>
    <form method="POST">
        <center>    
        <h2>Personal Details</h2>
        <div class="details">
            <input type ="text" name ="fname" placeholder="Name" pattern="[A-Za-z]{,3}" title="Enter valid name" required> 
            <br/>
            <input type ="text" name ="email" placeholder="E-mail id"  data-type = "E-mail" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title = "Enter a valid email" required> 
            <br/>
            <input type="text" name="phonenumber" placeholder="Phone number" title="Enter your mobile number without +91" pattern="[0-9]{10,10}" required="required">
            <br/>
            <input type="text" name="Altphonenumber" placeholder="Alternative Phone number" title="Enter your mobile number without +91" pattern="[0-9]{10,10}" required="required">
            <br/>
            <input type ="text" name ="address" placeholder="Address"  pattern="[a-z0-9#,]{7,}$" title = "Enter a valid Address" required> 
            <br/>
            <button class = "btn btn2" type="submit" name="Create">Proceed</button>
        </div>
        </center>
    </form>
    <br>
    <footer class="container">
        <center>
          <div>Designed and Developed by Sharath S Hebbar</div>
        </center>
    </footer>
</body>
</html>
    
app.py is a server written in flask

#details
@app.route('/details', methods = ['GET','POST'])
def details():
    if not(c_id == 0) and request.method == "POST":
        data = request.form
        #Name = data['fname']
        Email = data['email']
        Phone = data['phonenumber']
        Altphone = data['Altphonenumber']
        Address = data['address']
       
        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO details(name,email,phone,alt_phone,address) VALUES (%s,%s,%s,%s,%s)", (Name,Email,Phone,Altphone,Address))

        mysql.connection.commit()
        cur.close()
        return render_template('creditcarddetails.html')
    else:
        return redirect(url_for('login'))
    return render_template('details.html')

    

【问题讨论】:

  • 我认为只有当电子邮件不在 request.form 中时才会出现此键错误?您的代码在这里运行良好。

标签: python html css mysql flask


【解决方案1】:

首先,你需要在 `form` 中提及 `action` 属性。 在您的情况下,它将是 `action="{{ url_for('details') }}"`
而不是将其存储在 request.form 中的 data 变量中,您可以直接以这种方式放置它:
`Email = request.form['email']`

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2018-05-10
    • 1970-01-01
    • 2022-06-28
    • 2018-08-29
    • 1970-01-01
    • 2015-03-10
    • 2018-02-15
    • 2017-02-28
    相关资源
    最近更新 更多